You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否从form元素的onsubmit处理器获取event参数?为何参数为undefined?

如何从form的onsubmit处理器获取event参数?

你遇到的问题是因为在onsubmit属性里调用函数时,没有传递事件对象参数,导致函数里的x始终是undefined。下面是两种正确的解决方式:

方法1:在inline事件中直接传递event变量

修改HTML的onsubmit属性,显式把event作为参数传给函数:

<form method="post" id="fm1" onsubmit="usernamePasswordLogin(event);">
  <button>SUBMIT</button>
</form>

对应的JS无需改动,此时函数就能拿到事件对象,你可以正常调用preventDefault()阻止表单默认提交行为:

function usernamePasswordLogin(x) {
    x.preventDefault(); // 阻止表单默认提交
    console.log('x', x); // 现在能打印出事件对象
}

方法2:使用addEventListener绑定事件(推荐)

更现代的写法是避免inline事件处理器,通过JS代码绑定事件监听,此时回调函数会自动接收事件参数:

<form method="post" id="fm1">
  <button>SUBMIT</button>
</form>
document.getElementById('fm1').addEventListener('submit', function(event) {
    event.preventDefault();
    console.log('event', event);
    // 这里可以调用你的usernamePasswordLogin函数,把event传进去
    usernamePasswordLogin(event);
});

function usernamePasswordLogin(x) {
    console.log('x', x);
}

这种写法将HTML结构和JS逻辑分离,更易于维护和调试。

内容的提问来源于stack exchange,提问作者djy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:01:40