jQuery, запретить отправку формы, но разрешить отправку формы нажатием кнопки
У меня есть форма, в которой в текстовом поле ввода я ввожу число и нажимаю клавишу ВВОД, и я использую jQuery для добавления значения к текстовой области. Это все отлично работает.
У меня проблема в том, что если я добавляю кнопку отправки для отправки формы, как только я нажимаю клавишу ВВОД, она отправляет форму.
Я хочу, чтобы он не отправлял форму по нажатию кнопки ввода, а отправлял форму ТОЛЬКО при нажатии кнопки отправки.
Я попытался с помощью метода protectDefault() и возврата false, что остановит отправку формы при нажатии клавиши ВВОД, но если я добавлю событие нажатия на кнопку отправки для отправки формы, это ничего не даст. Я добавил предупреждение в функцию щелчка перед отправкой, и она срабатывает, но форма не отправляется
<form id="toteform" method="post" action="blah.php">
<input type="text" name="bin" id="bin" maxlength="4" autocomplete="off" />
<input type="text" name="totes" id="tote" maxlength="4" autocomplete="off" />
<input type="button" name="submit" class="submit" id="submit" value="Submit" />
</form>
JQuery
$("#submit").click(function() {
$('#toteform').submit();
});
$('#bin').focus();
$('#bin').keypress(function(e) {
if(e.which == 13) {
$('#tote').focus();
}
});
$('#tote').keypress(function(e) {
if(e.which == 13) {
// more code here to do other things
3 ответа
Я нашел решение
$("#toteform").submit(function(e) {
if (e.originalEvent.explicitOriginalTarget.id == "submit") {
// let the form submit
return true;
}
else {
//Prevent the submit event and remain on the screen
e.preventDefault();
return false;
}
});
Будьте осторожны с e.originalEvent.explicitOriginalTarget.id
подход. Он работает только в браузерах на основе Gecko.
Родственный ответ.
Я бы использовал комментарий, но мне не хватает репутации:(
Вы можете предотвратить отправку формы
$("#toteform").on('submit',function(e) {
e.preventDefault();
});
и по нажатию кнопки отправки вы можете вручную отправить форму.
$("#submit").click(function() {
$('#toteform').submit();
});