jqueryのclick()、submit()、およびマニュアルクリックの提出の違い
-
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")
更新しました:
実際に richardml あなたが抱えている最初の問題はjQueryのバグであると言ったので、最初に変更することです
id
何か他のものへの提出の。2番目の問題は次のとおりです
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">
これにより、送信ボタンまたは[submit()メソッドを使用してもフォームを送信するたびにFOO()がトリガーされます。