Puz*_*Boy 32 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" />
Run Code Online (Sandbox Code Playgroud)
Cur*_*urt 56
解决方法是在焦点调用上设置超时.
setTimeout(function(){
$("#cc_number").focus();
}, 0);
Run Code Online (Sandbox Code Playgroud)
我不是百分百肯定,但可能是因为在模糊时调用警报,你实际上从不允许文本框失去焦点,因此当调用焦点时,它已经拥有它.
通过使用超时,您将逻辑放入一个单独的线程,该线程与主javascript代码分开运行(非常类似于回调函数).
但正如你的问题评论也提到的那样,强制关注直到验证通过是令人讨厌的.
但这更多是针对用户体验的批评.
Sho*_*ate 17
您的DOM可能正在刷新,因此焦点不在此处.相反,你可以遵循这种方法:
$('#cc_number').validateCreditCard(function (result) {
if (result.length_valid && result.luhn_valid) {
} else {
$("#cc_number").attr("autofocus","autofocus")
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38820 次 |
| 最近记录: |