2015-08-24 1 views
3

Если я нажму кнопку ввода после редактирования input_a, вызывается processInputA(). Функция submit() опущена.AngularJS: первая кнопка в форме срабатывает при нажатии кнопки ввода, даже если она не является кнопкой отправки

Этого не происходит для input_b: он работает как ожидалось, хотя он похож на input_a. Функция submit() называется ожидаемой.

Как я могу предотвратить кнопку после input_a от стрельбы?

<form class="uk-form" ng-submit="submit()"> 
    <div class="uk-form-row"> 
    <input type="text" 
      name="input_a" 
      ng-model="buffer.inputA" ng-change="reportInputATyped()" 
      class="uk-width-3-10 uk-form-small"> 
    <button ng-cloak ng-show="inputADirty" class="uk-button uk-button-small" ng-click="processInputA()">Apply</button> 
    /
    <input type="text" 
      name="input_b" 
      ng-model="buffer.inputB" ng-change="reportInputBTyped()" 
      class="uk-width-6-10 uk-form-small"> 
    <button ng-cloak ng-show="inputBDirty" class="uk-button uk-button-small" ng-click="processInputB()">Apply</button> 
    </div> 
    // ...further inputs... 
</form> 

AngularJS: http://angular-meteor.com

Стили: http://getuikit.com

+0

Вы можете создать демо? Очевидно, зачем вводить пожары, но второй должен вести себя одинаково. Вероятно, некоторые из вашего кода, который вы не показываете, взаимодействуют с ним, предотвращая его в случае второго ввода. – dfsq

+0

Нельзя отправить огонь, когда я нажимаю его на первый вход: он запускает обработчик кликов 'processInputA()'. (но вместо этого он должен был подавать огонь). – ideaboxer

+0

Это всего лишь локальный код. Не знаю, как я мог бы создать демо-версию ... – ideaboxer

ответ

2

<button> элементы кажутся типа по умолчанию submit если оно вынесено через Chrome. Не то, что я ожидал интуитивно.

В статье W4Schools.com говорится верхушку:

Всегда указать тип атрибута для элемента. Различные браузеры могут использовать разные типы по умолчанию для элемента.

http://www.w3schools.com/tags/att_button_type.asp

версия, которая работает при обработке Chrome:

<form class="uk-form" ng-submit="submit()"> 
    <div class="uk-form-row"> 
    <input type="text" 
      name="input_a" 
      ng-model="buffer.inputA" ng-change="reportInputATyped()" 
      class="uk-width-3-10 uk-form-small"> 
    <button type="button" ng-cloak ng-show="inputADirty" class="uk-button uk-button-small" ng-click="processInputA()">Apply</button> 
    /
    <input type="text" 
      name="input_b" 
      ng-model="buffer.inputB" ng-change="reportInputBTyped()" 
      class="uk-width-6-10 uk-form-small"> 
    <button type="button" ng-cloak ng-show="inputBDirty" class="uk-button uk-button-small" ng-click="processInputB()">Apply</button> 
    </div> 
    // ...further inputs... 
</form>