我正在尝试着重于信用卡验证失败。但是奇怪的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包含解决方案。
一种解决方法是在焦点 call 上设置超时。
setTimeout(function(){
$("#cc_number").focus();
}, 0);
我不是100%确信,但是可能是因为警报是在模糊时调用的,因此您实际上从未允许文本框失去焦点,因此,在调用焦点时,它已经具有焦点。
通过使用超时,您将逻辑放入单独的线程中,该线程与主要的JavaScript代码分开运行(很像回调函数)。
但是,正如您的问题评论中提到的那样,将重点放在验证通过之前是令人讨厌的。
但这更多是用户体验批评。