Разница в представлении форм HTML между click (), отправить () и ручной щелчок в jQuery

StackOverflow https://stackoverflow.com/questions/4744237

  •  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")

Обновлено:

  1. на самом деле как Ричардмл сказал, что первая проблема у вас есть, - это ошибка jQuery, поэтому первым делом переименовать id из подчинения чего -то другого.

  2. Вторая проблема - это type принадлежащий Test1btn input которые должны быть 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 () всякий раз, когда вы отправляете форму, будь то, используя кнопку отправки или метод отправки ().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top