jQuery焦点不起作用

jQuery focus not working

本文关键字:不起作用 焦点 jQuery      更新时间:2023-09-26

我正在努力关注信用卡验证失败。但奇怪的CCD_ 1不工作。

$('#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" />

如注释中所述,您的原始jsfiddle包含该解决方案。

解决方法是对焦点调用设置超时。

setTimeout(function(){
    $("#cc_number").focus();
}, 0);

我不能100%确定,但可能是因为在模糊时调用了警报,所以你永远不会让文本框失去焦点,因此当调用焦点时,它已经失去了焦点。

通过使用超时,您将逻辑放入一个独立的线程中,该线程独立于主javascript代码运行(很像回调函数)。


但正如你的问题评论也提到的那样,在验证通过之前强行集中注意力是令人讨厌的。

但这更多的是对用户体验的批评。

您的DOM可能正在刷新,因此焦点在这里不起作用。相反,您可以采用以下方法:

$('#cc_number').validateCreditCard(function (result) {
    if (result.length_valid && result.luhn_valid) {
   } else {
      $("#cc_number").attr("autofocus","autofocus")
      return false;
   }
});