Javascript 使用模糊事件,如何确保模糊事件在提交按钮之前发生?
假设我在输入上写Bob,但我仍然专注于输入,然后单击register。错误不会显示,因为我仍然专注于输入。我的问题是,如何确保在使用常规javascript单击submit之前显示错误Javascript 使用模糊事件,如何确保模糊事件在提交按钮之前发生?,javascript,Javascript,假设我在输入上写Bob,但我仍然专注于输入,然后单击register。错误不会显示,因为我仍然专注于输入。我的问题是,如何确保在使用常规javascript单击submit之前显示错误 功能检查(表单){ username=document.querySelector(表单).querySelector(“输入[name=username]”) username.addEventListener('blur',e=>{ 如果(username.value==“Bob”){ const labe
功能检查(表单){
username=document.querySelector(表单).querySelector(“输入[name=username]”)
username.addEventListener('blur',e=>{
如果(username.value==“Bob”){
const label=document.createElement('label')
label.appendChild(document.createTextNode(“您的名字不能是bob”))
username.parentNode.insertBefore(标签,username.nextSibling)
}
})
}
检查(“#formTest”)
注册
用户名
登记
您在此实例中使用了错误的事件侦听器。您可能希望使用keyup
而不是blur
。我也看不到你在哪里调用check()代码>代码中的任意位置
编辑:对不起,我引用了keydown
,但在能够正确测试keydup
后,您需要的值是取消匿名并重新使用
在使用动态生成的错误时,这一点非常重要
let表单,用户名;
const testBob=e=>{e.preventDefault()
let error=document.getElementById(“error”);
if(error)error.style.display=“无”;
如果(username.value==“Bob”){
error=document.getElementById(“error”)| | document.createElement(“标签”)
如果(!error.id){
error.id=“error”;
error.appendChild(document.createTextNode(“您的名字不能是bob”))
username.parentNode.insertBefore(错误,username.nextSibling)
}
如果(e.type==“提交”)e.preventDefault()
error.style.display=“”;
}
};
addEventListener(“加载”,函数(){
表单=document.querySelector(#formTest)
username=form.querySelector(“输入[name=username]”)
username.addEventListener('blur',testBob)
表单.addEventListener('submit',testBob)
});代码>
注册
用户名
登记
通过使用keyup
事件,它正在按预期工作。请检查代码片段
功能检查(表单){
username=document.querySelector(表单).querySelector(“输入[name=username]”)
username.addEventListener('keyup',e=>{
如果(username.value==“Bob”){
const label=document.createElement('label')
label.appendChild(document.createTextNode(“您的名字不能是bob”))
username.parentNode.insertBefore(标签,username.nextSibling)
}
})
}
检查(“#formTest”)
注册
用户名
登记
我给你写了一个片段。请添加执行check()
取消匿名化函数的位置,并在提交时调用该函数blur@mplungjan做这件事。我会在其中添加toLowerCase()
,检查username是否等于bob。但是如果他使用keyup
如果你使用keyup/keydown(我将使用“输入”事件),那么当输入Bobby tooYes时,错误将出现/闪烁,并在编辑@jimmyjimmy后查看我的编辑