javascript - jQuery 焦点不工作

标签 javascript jquery

我正在尝试关注信用卡验证失败。但是奇怪的 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/

相关文章:

javascript - 我怎样才能让这个 eval() 调用在 IE 中工作?

c# - 如何将 MVC/C# 对象输出到 Javascript 对象?

javascript - 使用jquery(以及其他一些东西)更改多个图像源

javascript - 异步Javascript

javascript - 从页面流中移除类似于固定位置的元素

javascript - 如何在拖动时阻止 jQuery UI 的 Sortable 操作 DOM?

javascript - Youtube API-无法将视频添加到播放列表

jquery - 如何在Jquery中判断child是否被点击

JQuery:从 "OnClick"标签中删除 'a' 事件

jQuery val( ) 从多个单选按钮名称集中检索不正确的值