formのsubmitイベントの発生についての質問です。
formのsubmitイベントの発生についての質問です。
あるところで、「form.submit() は submit イベントを発火しない」
とあったので、
↓のscriptで、formのsubmitイベントを調べていました。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>SessionTestNext</title>
<style type="text/css"></style>
<script type="text/javascript">
function send1(elm){
elm.form.submit();
}
function send2(){
document.getElementById("form1").submit();
}
if('undefined' !== typeof document.addEventListener){
document.addEventListener('submit', function(event){
var target = event.target;
alert(target.id);
}, false);
} else if ('undefined' !== typeof document.attachEvent){
document.attachEvent('onSubmit', function(event){
var target = event.srcElement;
alert(target.id);
});
}
</script>
</head>
<body>
<p>SessionTestNext 1 </p>
<form id="form1" action="/php/session2.php" method="post" onsubmit="alert('Submited!');return false;">
<input type="text" name="parm2" value="fugafuga">
<input type="submit" value="サブミット">
<button onclick="send1(this)">Javascriptサブミット(1)</button>
</form>
<button onclick="send2()">Javascriptサブミット(2)</button>
</body>
</html>
だのに、
send1()を実行した時は、イベントが検知され'Submited!'がアラートします。
ただし、onsubmitのハンドラーでfalseを返してるので、サブミットしません。
send2()を実行した時は確かに、submitイベントは発生せず、'Submited!'の
アラート無しで、実際サブミットされます。
documentにaddEventListenerで追加したハンドラーの方でも、send1()の
時だけ検知され'form1'がアラートします。
send1()で検知されるのは何故でしょう?
また、IEでも同様の動作なんですが、何故か document.attachEvent('onsubmit',
の方が、まったく動きません。(タイポかも)