8

次のような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」ボタンのように機能しません。私の理解では、ボタンを 3 回クリックしても同じことを行う必要があります。つまり、「現在送信を開始しています」というテキストが表示された後にフォームを送信する必要があります。私の質問は、3 つのボタン クリックの結果が異なるのはなぜですか?

私はjquery 1.3.2を使用しています

4

4 に答える 4

6

$('#testform').submit(); を介してフォーム送信を手動で設定すると、jQuery送信イベントハンドラーが無視されるようです。

これはクリック ハンドラで機能するはずです。

$('#testform').trigger("submit")
于 2011-01-20T19:37:07.237 に答える
5

submit送信ボタンの ID が「submit」の場合、jQuery (または DOM) のバグによりメソッドが失敗するため、2 番目のボタンはフォームを送信しません。参照: http://bugs.jquery.com/ticket/1414

于 2011-01-27T22:48:36.507 に答える
1

更新しました:

  1. 実際、richardmlが最初の問題は jQuery のバグだと言ったので、最初idにサブミットの名前を別の名前に変更します。

  2. 2 番目の問題は、通常の送信ボタンのように動作するために必要なtest1btntypeの問題です。 inputtype="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();
    });
});

残りは期待どおりに機能しています。

この助けを願っています

于 2011-01-29T15:51:47.020 に答える
0

代わりに onsubmit イベントを使用して関数をトリガーする必要があります。

<form id="testform" method="post" onsubmit="foo()" action="backend/search_test.do">

これにより、送信ボタンまたは submit() メソッドを使用してフォームを送信するたびに foo() がトリガーされます。

于 2016-02-21T07:05:31.990 に答える