2013-12-10 4 views
1

У меня есть форма с текстовым полем ввода и кнопкой. Я бы хотел, чтобы пользователь нажал кнопку ввода в текстовом поле - не отправлять форму, а вызвать другое действие. Кнопка имеет свой отдельный обработчик кликов, который по какой-то причине увольняется, когда я нажимаю кнопку ввода в текстовом поле.Кнопка нажата на угловую форму submit

пример: http://jsfiddle.net/T8zLq/1/

<form onsubmit="return false" ng-submit="mysubmit()" ng-controller="TestCtrl" ng-app="Test"> 
    <input type="text" /> 
    <button ng-click="test()">X</button> 
</form> 

var app=angular.module("Test", []); 

app.controller("TestCtrl", ["$scope", function($scope) { 
    $scope.test = function() {alert('lol'); }; 
    $scope.mysubmit = function() {alert('submit');}; 
}]); 

Почему это происходит?

+0

Так что же вы хотите, чтобы это произошло? вы хотите, чтобы test() не запускался, но mysubmit() срабатывал при нажатии клавиши ввода? Или вы не хотите стрелять? –

+0

Правильно - тест() должен срабатывать только при нажатии кнопки, а не при отправке формы – user3088880

ответ

6

установить type='button' к кнопке

<form ng-submit="mysubmit()" ng-controller="TestCtrl"> 
    <input type="text" /> 
    <button ng-click="test()" type='button'>X</button> 
</form> 

Demo

More

+0

Ах, не понимал, что тип кнопки по умолчанию был 'submit'. – user3088880

+0

Просветите нас, почему человек? – beku8

+2

@ beku8 Значение по умолчанию для кнопки: * submit *, поэтому каждый раз, когда вы нажимаете клавишу ввода, он отправляет форму. –

Смежные вопросы