Мне нравится создавать базовый диалог с полимером. Пользователь должен ввести название категории, и если он что-то введет, он может нажать кнопку, чтобы сохранить/отправить его. Кнопка должна быть отключена, если в поле категории нет значения или пока в поле категории есть ошибка проверки.Как отключить кнопку в полимере до тех пор, пока поле не будет действительным?
Я пробовал это, но он не устанавливает кнопку для отключения вначале.
<paper-input required auto-validate invalid="{{invalid}}"></paper-input>
<paper-button disabled$="[[invalid]]">Send</paper-button>
Polymer({
is: 'list',
properties: {
invalid: {
type: Boolean
},
...
Если я использую функцию validate()
на входе, чтобы вычислить значение кнопки будет также вызвать недопустимое состояние (ошибка Msg) на входе, хотя пользователь не может быть наведена что-то еще.
Как я могу обойти это?
Код: paper-input; paper-button
Maria's предложение с iron-form
:
<form is="iron-form" method="get" action="/" id="eventsDemo">
<paper-input name="name" label="Name" required auto-validate></paper-input>
<paper-button raised disabled id="eventsDemoSubmit">
</form>
<script>
eventsDemo.addEventListener('change', function(event) {
// Validate the entire form to see if we should enable the `Submit` button.
eventsDemoSubmit.disabled = !eventsDemo.validate();
});
document.getElementById('eventsDemo').addEventListener('iron-form-submit', function(event) {
eventsDemoSubmit.disabled = false;
});
...
Я думал об этом, но потом это похоже на то, что я построил свою собственную проверку. Кроме того, мне нужно будет сделать это для каждого поля ввода. Если я так делаю, функция проверки входных элементов не предлагает «никакого» значения. – jwillmer
Я знаю, что это не самое элегантное решение вашей проблемы, но я не думаю, что есть еще один вариант. – Maria
Вы также можете обернуть свою кнопку в компонент формы, например [iron-form] (https: //www.webcomponents .org/element/PolymerElements/iron-form/demo/demo/index.html) и установить для всех элементов формы глобальный глобальный обмен. Подобно второму и последнему примеру в ссылке. Однако вам все равно нужно будет проверить все значения для ввода. – Maria