我有类似的东西:
<input type="textbox" id="partNumber" onChange="validatePart(this);">
<input type="textbox" id="quantity" onfocus="saveOldQuantity(this);">
The onChange
更改后事件正确触发and文本框失去焦点。什么时候quantity
获得焦点,onfocus
事件正确触发以保存旧值quantity
在进行更改之前。
If validatePart()
检测到无效的partNumber
值,它alert
是用户了解这一事实。之后alert()
已清除,我想将焦点返回到partNumber
输入。但做一个focus()
输入节点上没有给予它焦点。这里的调试很棘手,因为 IE 调试窗口交互当然是改变焦点。
我怎样才能确保焦点返回到partNumber
如果检测到错误validatePart()
?
编辑:
一个简单的版本validatePart()
:
function validatePart(node) {
if (!node.value) {
alert('Please enter a part number.');
node.focus(); // <======= why isn't this having any effect??
}
}
添加一个小的超时并将焦点重置回partNumber
文本框应该可以解决问题。
因此你的validatePart()
函数变成这样:
function validatePart(node) {
if (!node.value) {
alert('Please enter a part number.');
setTimeout(function(){node.focus();}, 1);
}
}
这是一个快速的“实时”示例 http://jsbin.com/uvijeh这只是触发一个alert
无论输入什么内容partNumber
文本框并成功将焦点返回到partNumber
文本框(即使您将其移至quantity
文本框。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)