submit()obsubmitイベントをトリガーできない解決策
2122 ワード
formフォームは通常type=「submit」のボタンによってトリガーされ、クリックからフォームの提出まで、次の2つの方法を経験します. onsubmit(); submit();
一部のページでは、いくつかの理由で標準のボタンを放棄し、type=「button」のボタンで置き換え、submit()を手動でトリガーします.以下のようにします.
このとき、onsubmit()のプログラムが実行されないため、問題が発生しました.DHTMLマニュアルでは、両者の関係について何度も言及しています.
submit Methodは
The submit method does not invoke the onsubmit event handler. Call the onsubmit event handler directly. When using Microsoft® Internet Explorer 5.5 and later, you can call the fireEvent method with a value of onsubmit in the sEvent parameter.
したがって、解決策は、submit()の前にonsubmitイベントを手動でトリガーし、次の完全なコード(jqueryを参照)を使用します.
一部のページでは、いくつかの理由で標準のボタンを放棄し、type=「button」のボタンで置き換え、submit()を手動でトリガーします.以下のようにします.
<input type="button" value=" " onclick="document.form.submit();" />
このとき、onsubmit()のプログラムが実行されないため、問題が発生しました.DHTMLマニュアルでは、両者の関係について何度も言及しています.
submit Methodは
The submit method does not invoke the onsubmit event handler. Call the onsubmit event handler directly. When using Microsoft® Internet Explorer 5.5 and later, you can call the fireEvent method with a value of onsubmit in the sEvent parameter.
したがって、解決策は、submit()の前にonsubmitイベントを手動でトリガーし、次の完全なコード(jqueryを参照)を使用します.
<html>
<head>
<script src="jquery-1.3.2.min.js"></script>
</head>
<body>
<form id="myform" action='/Personinfo/infoAction' method='post' name='Users_form' >
:<input type='text' name="obj_Users[birth]" value='1971-01-01' />
<input type='button' value=' ' onclick="foo();" />
</form>
</body>
</html>
<script language=javascript>
// obsubmit
$(window).load(function(){
$("#myform").bind("submit", function() { alert(' onsubmit !'); return false;})
});
function foo(){
var result = false;
//IE fire event
form = document.Users_form;
if (form.fireEvent) {
result = form.fireEvent('onsubmit');
//DOM2 fire event
} else if (document.createEvent) {
var ev = document.createEvent('HTMLEvents');
ev.initEvent('submit', false, true);
result = form.dispatchEvent(ev);
}
if(result) {document.Users_form.submit();}
}
</script>