jqueryのclick()、submit()、およびマニュアルクリックの提出の違い

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

jquery 1.3.2を使用しています

役に立ちましたか?

解決

2番目のボタンは、jquery(またはdom)のバグが原因でフォームを送信しません。 submit 送信ボタンのIDが「送信」の場合に故障する方法。見る: http://bugs.jquery.com/ticket/1414

他のヒント

jquery送信イベントハンドラーが無視されているようです。

これは、クリックハンドラーで動作するはずです。

$('#testform').trigger("submit")

更新しました:

  1. 実際に richardml あなたが抱えている最初の問題はjQueryのバグであると言ったので、最初に変更することです id 何か他のものへの提出の。

  2. 2番目の問題は次のとおりです typetest1btn 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">

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top