#javascript #jquery #submit
#javascript #jquery #Отправить
Вопрос:
Недавно я столкнулся, по крайней мере, для меня, с интересной ошибкой. Мы создали JS, который отключает кнопку отправки, если в форме нет ошибки проверки, Чтобы предотвратить отправку нескольких форм и т. Д. Это отлично работает в Firefox. Однако это никогда не будет работать в Chrome.
Это была моя логика для проверки формы и отключения кнопки, если все в порядке.
$('body').on('click', "button[type='submit']", function (evt) {
MessageBox.RemoveAllBoxes();
if (!CustomDynamicValidation()) {
//Something went wrong
return false;
}
//Everything is ok. Disable button and send
$(this).attr('disabled', true);
return true;
});
Это работает так, как и предполагалось для Firefox. Кнопка была отключена после нажатия, и форма была отправлена. В Chrome кнопка была отключена, но форма не была отправлена.
Ответ №1:
Я полагаю, что если я установлю disable в тайм-аут, он начнет работать даже в Chrome. Нравится:
$('body').on('click', "button[type='submit']", function (evt) {
var submitButton = $(this);
MessageBox.RemoveAllBoxes();
if (!CustomDynamicValidation()) {
//Something went wrong
return false;
}
//Everything is ok. Disable button and send
setTimeout(function () { $(button).attr('disabled', true); }, 0);
return true;
});
Мой вопрос в том, почему это так? Почему для работы Chrome должен быть тайм-аут даже с нулевой задержкой? Возможно, есть более элегантное решение для этого?