我正在尝试关注信用卡验证失败。但是奇怪的 focus()
不工作。
$('#cc_number').validateCreditCard(function (result) {
if (result.length_valid && result.luhn_valid) {
} else {
$("#cc_number").focus();
return false;
}
});
<input type="text" id='cc_number' name="cc_number" />
最佳答案
作为mentioned in the comments ,您的原始 jsfiddle 包含解决方案。
解决方法是在焦点调用上设置超时。
setTimeout(function(){
$("#cc_number").focus();
}, 0);
我不是 100% 确定,但可能是因为在模糊时调用警报,您实际上从未允许文本框失去焦点,因此当调用焦点时,它已经拥有它。
通过使用超时,您将逻辑放入一个单独的线程中,该线程独立于主要的 javascript 代码运行(很像回调函数)。
但是正如您的问题评论也提到的那样,在验证通过之前强制关注是很烦人的。
但这更像是对用户体验的批评。
关于javascript - jQuery 焦点不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18383747/