gpt4 book ai didi

javascript - 为什么 onsubmit 事件有效但 addEventListener 无效?

转载 作者:行者123 更新时间:2023-11-30 19:37:31 28 4
gpt4 key购买 nike

我有一个小表单,我想用 XMLHttpRequest 提交。

我尝试使用 onsubmit,效果很好,并且有效(在下面的代码中进行了注释):

<div class='form-box'>
<form id="send_frm" method="post" action="" >
<div class='msg-box'>
<textarea name="ssmsg" maxlength="500"></textarea>
</div>
<div class='btn-box'>
<input class="sub-btn" name="save" type="submit" value="Mentés"/>
</div>
</form>
</div>
<script type="text/javascript">
var ajaxObj = new XMLHttpRequest();
var form = document.forms[0];
form.addEventListener(
"submit",
ajaxer
);

// form.onsubmit = function() /* works fine! :) */
// {
// return ajaxer();
// };

function ajaxer()
{
ajaxObj.onreadystatechange =
function()
{
if( this.readyState == 4 && this.status == 200 )
{
console.log(ajaxObj);
}
}
ajaxObj.open("POST", "<?php echo BASE_URL; ?>app/controls/msg_handler.php", true);
ajaxObj.send('data=whatever');
return false;
}
</script>

但是使用 addEventListener 时它不起作用,就像 onsubmit 一样。

请解释原因。非常感谢您的帮助。

最佳答案

return 语句不被监听器接受所以用event.preventDefault()防止表单重新加载的方法

这就是为什么这个方法有效

 form.onsubmit = function() 
{
return ajaxer(); // function return false so code break the execution
};

问题

var ajaxObj = new XMLHttpRequest();
var form = document.forms[0];
form.addEventListener(
"submit",
ajaxer
);


function ajaxer(e) {
console.log('sss');
return false;
}
<div class='form-box'>
<form id="send_frm" method="post" action="">
<div class='msg-box'>
<textarea name="ssmsg" maxlength="500"></textarea>
</div>
<div class='btn-box'>
<input class="sub-btn" name="save" type="submit" value="Mentés" />
</div>
</form>
</div>

解决方案

var ajaxObj = new XMLHttpRequest();
var form = document.forms[0];
form.addEventListener(
"submit",
ajaxer
);


function ajaxer(e) {
console.log('sss');
e.preventDefault();
}
<div class='form-box'>
<form id="send_frm" method="post" action="">
<div class='msg-box'>
<textarea name="ssmsg" maxlength="500"></textarea>
</div>
<div class='btn-box'>
<input class="sub-btn" name="save" type="submit" value="Mentés" />
</div>
</form>
</div>

关于javascript - 为什么 onsubmit 事件有效但 addEventListener 无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55782226/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com