【发布时间】:2019-09-16 15:22:59
【问题描述】:
我想在用户转到另一个字段时验证输入框。我有以下代码可以正常工作。
validate = (v) => {
if (v.value=="yes") return;
alert("Value must be exactly 'yes'. Please rectify.");
//v.focus();
}
<p>Enter only 'yes' in this field:</p>
<input onblur='validate(this);' />
但是,如果我添加调用focus 方法的目的是在继续之前向用户突出显示以修复错误,则onblur 方法将被无休止地触发。为什么会这样?
小提琴是https://jsfiddle.net/OldGeezer/8xfLwvn6/4/
在进一步的测试中,我发现如果因为我单击另一个应用程序窗口而失去焦点,则不会发生无休止的onblur。如果我只是单击网页的另一部分(在 Chrome 中),就会发生这种情况。
【问题讨论】:
-
alert()结束时您失去焦点,您可以使用您当前的代码验证这一点。 -
顺便说一句,这真的很烦人,请使用其他方法(如表单验证)来执行此操作。 (用户:让我继续,我稍后会解决这个问题!)
-
不过,我不确定
alert()的规格。所以我不会作为答案发布。
标签: javascript dom dhtml onblur onfocus