表单含name/id为confirm的输入框时onsubmit事件失效问题
问题原因及解决办法
这问题的核心是DOM对象的属性命名冲突:
浏览器会自动把表单里的控件(通过name或id)挂载到对应的<form> DOM实例上,属性名就是控件的name/id值。当你有个name和id都是confirm的复选框时,form.confirm就指向了这个复选框元素,直接覆盖了全局的window.confirm()函数——你在onsubmit里写的confirm('Are you sure ?'),其实是在调用这个复选框元素,而不是原生的确认弹窗函数,自然没法触发预期的确认逻辑。
给你两个解决思路:
- 最简单的:改复选框的name和id,别用
confirm这种和全局API重名的词,比如改成confirm-terms:<input type="checkbox" name="confirm-terms" id="confirm-terms"> - 如果非要保留这个命名,就在onsubmit里明确指定调用全局的
window.confirm,绕开表单的属性覆盖:<form onsubmit="return window.confirm('Are you sure ?')"> <!-- 你的表单内容 --> </form>
内容的提问来源于stack exchange,提问作者mkt
相关产品推荐
相关产品推荐

