Разница в представлении форм HTML между click (), отправить () и ручной щелчок в jQuery
-
13-10-2019 - |
Вопрос
У меня есть страница JSP следующим образом:
<script type="text/javascript" src="/mywebapp/js/jquery.js"></script>
<script type="text/javascript">
$( function() {
$('#testform').submit(function(){
alert('now starting submit');
return true;
});
$("#test1btn").click(function(){
$('#testform #submit').click();
});
$("#test2btn").click(function(){
$('#testform').submit();
});
});
</script>
<form id="testform" method="post" action="backend/search_test.do">
<input id="reqpagenr" name="reqpagenr" size="10">
<input type="button" id="test1btn" value="TestClick"/>
<input type="button" id="test2btn" value="TestSubmit"/>
<input id="submit" type="submit" value="Go">
</form>
Когда я вручную нажимаю (т.е. с помощью мыши) кнопку «go», форма отправляется после отображения текста «Теперь запуск отправки»; Когда нажимайте кнопку «Testclick», форма успешно отправлена, но текст «теперь начинает отправить» не появляется; Когда нажимает кнопку «Testsubmit», появляется текст «сейчас запуск», но форма вообще не представлена.
Вопреки моим расширениям, кнопки «TestClick» и «testSubmit» не функционируют, как кнопка «Go» делает, когда оба нажимают. В моем понимании, три нажатия кнопки должны делать то же самое, то есть отправить форму после того, как появится текст «сейчас запуск отправки». Итак, мой вопрос: почему результаты трех кнопок нажимают разные?
Я использую jQuery 1.3.2
Решение
Вторая кнопка не отправляет форму из -за ошибки в jQuery (или Dom), которая вызывает submit
Метод сбоя, если идентификатор кнопки отправки - «отправить». Видеть: http://bugs.jquery.com/ticket/1414
Другие советы
Похоже, что обработчик событий JQUERY отправляется игнорируется при вручную настройку формы, отправляемой через $ ('#testform'). Opper ();
Это должно работать в обработке кликов:
$('#testform').trigger("submit")
Обновлено:
на самом деле как Ричардмл сказал, что первая проблема у вас есть, - это ошибка jQuery, поэтому первым делом переименовать
id
из подчинения чего -то другого.Вторая проблема - это
type
принадлежащий Test1btninput
которые должны бытьtype="submit"
Чтобы вести себя как обычная кнопка отправки.
Хитрость состоит в том, чтобы изменить тип на прокат мыши, поэтому код будет выглядеть так:
$(function() {
$('#testform').submit(function() {
alert('now starting submit');
});
//TestClick
$('#test1btn').hover(function() {
$(this)[0].setAttribute('type', 'submit');
},function() {
$(this)[0].setAttribute('type', 'button');
});
//TestSubmit
$('#test2btn').click(function() {
$('#testform').submit();
});
});
Остальное работает, как и ожидалось.
Надеюсь, это поможет
Вы должны использовать событие OnSubmit, чтобы запустить функцию.
<form id="testform" method="post" onsubmit="foo()" action="backend/search_test.do">
Это запустит foo () всякий раз, когда вы отправляете форму, будь то, используя кнопку отправки или метод отправки ().