联系表单JS提交调用e.preventDefault()后 满足条件仍无控制台输出问题
问题修正方案
核心错误1:事件绑定对象错误
- 代码中通过
document.querySelector(".mainform")选中的是包裹表单的外层<div>元素,而submit事件仅会在原生<form>元素上触发,因此提交按钮的回调函数完全没有执行,所有控制台输出逻辑都不会运行。 - 修正方式:将表单选择器改为选中真实的
<form>元素,可修改为:const form = document.querySelector(".mainform form");
核心错误2:校验函数传参错误
- 调用
checkpass(password)时,传入的是整个密码输入框的DOM对象,并非用户输入内容的长度。即便事件绑定修正完成,DOM对象与数字10做大小比较时会被转为NaN,永远无法匹配长度条件,只会输出Out。 - 修正方式:调用校验函数时传入密码输入内容的实际长度:
form.addEventListener('submit',function(e){ e.preventDefault(); checkpass(password.value.length); })
附加语法错误(当前未触发,后续调试会影响)
- 编写的
testfunc函数中console.log(type(emailid));存在语法错误,正确的类型检测关键字为typeof,修改为:console.log(typeof emailid);
内容的提问来源于stack exchange,提问作者Sahas Vivek
相关产品推荐
相关产品推荐

