on («submit» работает при нажатии кнопки <button>, но не при нажатии enter в поле ввода)

0

Я использую on('submit') чтобы определить, когда была отправлена форма, но она работает только тогда, когда пользователь нажимает кнопку отправки.

Я использую <button> чтобы я мог поместить изображение внутри кнопки. Я знаю, что могу использовать ввод с type="submit" и использовать CSS с изображением, но мне хотелось бы узнать альтернативный способ jQuery.
Я думал о том, чтобы делать or сравнивать, например, on('submit') или когда пользователь нажимает вводить в любом из полей ввода, но как мне это сделать?

$('#form').on('submit', function (e) {

    e.preventDefault();

    var email = $('#email').val();

    function validateEmail(email) { 
        var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        return re.test(email);
    } 

});


<form id="form">
    <input id="email" maxlength="64" name="EmailEDIT" type="text" width="100">
    <button id="submitBtn"><img height="30" src="images/fx_demo_button.png" width="74"></button>
</form>
  • 3
    мы могли бы увидеть какой-нибудь код?
  • 1
    поделиться своими HTML и JS
Показать ещё 11 комментариев
Теги:

2 ответа

0
Лучший ответ

Если пользователь нажимает кнопку ввода в одном из полей, форма будет отправлена. Это приведет к тому же событию, что и кнопка. Если этого не происходит, что-то в вашем коде.


Вы прокомментировали, что ваш код не работает, но он: http://jsfiddle.net/B5pZ4/
Все, что я добавил, было alert(1); остальное - ваш код из этой темы

Вы определяете свою функцию в обработчике событий, может быть лучше отделить это, на всякий случай, если вы хотите снова использовать эту функцию (или немного изменить ее и использовать в двух ситуациях).

Если вы разделите его в своем коде, это будет иметь больше смысла, я также думаю, что это проблема, с которой вы сталкиваетесь:
http://jsfiddle.net/B5pZ4/1/

Вы можете сделать свой код только одной строкой. Вы создаете функцию в вашем обработчике событий (который в этом случае следует считать плохой практикой!), Но вы никогда не называете это. Либо удалите объявление функции, либо добавьте его под функцию:

return validateEmail( email ); // THIS IS BAD PRACTICE AS FIX!

Совет: если вы работаете в html5, вы можете использовать это, и браузер выполнит проверку для вас:

<input type="email" />
  • 0
    Вы описываете проблему, с которой я столкнулся - я не понимаю, почему нажатие клавиши ввода на входе не вызывает обработчик события отправки ...
  • 0
    Изменил мой ответ :)
Показать ещё 1 комментарий
0

Для этого вам нужно вставить невидимый тип ввода для этого.

  • 0
    Не -1, но у него есть подчинение, так что это не может быть проблемой. Кроме того, после того, как я проверил его код, это сработало. Проблема не в обработчике событий, проблема в том, что после того, как я покопался, он использует функцию
  • 0
    Martijn Это может работать из-за конкретного браузера, который вы используете. Я думаю, что решение Маака будет работать, но это неуклюже.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню