Как предотвратить выполнение обработчика jQuery на элементе кнопки внутри формы, когда пользователь нажимает клавишу ввода? - PullRequest
0 голосов
/ 26 октября 2011

У меня есть элемент button внутри form, например:

<form>
    <input type="text">
    <button>Test</button>
    <input type="submit" value="Submit"/>
</form>

Со следующим JS:

$('form').submit(function() {
    alert('Form submitted.');
    return false;
});

$('button').click(function() {
    alert('Button clicked.');
});

И jsFiddle: http://jsfiddle.net/JnnRX/

Когда пользователь фокусирует текстовое поле, вводит какой-то текст и нажимает ввод, сначала выполняется обработчик button, а затем обработчик form.Однако я бы хотел, чтобы он просто выполнял обработчик формы и игнорировал кнопку.Есть ли способ получить такое поведение, или лучше заменить мой button элемент на что-то еще?

Ответы [ 2 ]

1 голос
/ 26 октября 2011

Создайте кнопку типа button

<button type="button">Test</button>

Если это тип, браузер не распознает отправленные сообщения «enter», если эта кнопка не имеет фокуса.Обычно первая кнопка submit в потоке формы будет той, которая будет отправлена ​​при вводе.

0 голосов
/ 26 октября 2011

Вот, пожалуйста, http://jsfiddle.net/JnnRX/17/

Обычно вы просто используете e.preventDefault () для keyup () для формы. e представляет событие keyup, а e.keyCode представляет нажатую клавишу. 13 - код клавиши ввода.

EDIT: Woops, я не поняла ваш первоначальный запрос Я обновил jsfiddle с тем, что вы хотели.

...