为什么 focus() 方法不起作用?
Why focus() method is not working?
相同的代码在 register.phtml 页面上用于 focus() 但此代码不适用于 personal.phtml.
<script>
$(document).ready(function(){
$("#rut").blur(function(){
document.getElementById('error12').innerHTML ="";
var Rut = $("#rut").val();
var RemoveDotInRut = Rut.split('.').join("");
var RemoveHypenInRut = RemoveDotInRut.split('-').join("");
var freshString = RemoveHypenInRut.length;
if(freshString<8 || freshString>9){
document.getElementById('error12').innerHTML = "<?php echo $this->__('Please enter a valid Rut number.') ?>";
$("#rut").val('');
$("#rut").focus();
}
});
});
</script>
上面的脚本一切正常,但 focus() 不工作。为什么?
一旦模糊函数结束,焦点就会丢失,所以在模糊函数内设置焦点没有效果
替换
$("#rut").focus();
和
setTimeout(function() {
$("#rut").focus();
}, 0);
这将 "re-focus" 下一个事件循环中的元素
使用以下代码:
$("#focusedDiv").focus(function () {
....
});
使用那个:Demo
将您的 .focus()
移到那里:
$(this).delay(0).queue(function() {
$(this).focus().val("").dequeue();;
});
另外,我已经优化了你的代码。 $("#rut")
已替换为 $(this)
点击here!
从这里开始尝试。
相同的代码在 register.phtml 页面上用于 focus() 但此代码不适用于 personal.phtml.
<script>
$(document).ready(function(){
$("#rut").blur(function(){
document.getElementById('error12').innerHTML ="";
var Rut = $("#rut").val();
var RemoveDotInRut = Rut.split('.').join("");
var RemoveHypenInRut = RemoveDotInRut.split('-').join("");
var freshString = RemoveHypenInRut.length;
if(freshString<8 || freshString>9){
document.getElementById('error12').innerHTML = "<?php echo $this->__('Please enter a valid Rut number.') ?>";
$("#rut").val('');
$("#rut").focus();
}
});
});
</script>
上面的脚本一切正常,但 focus() 不工作。为什么?
一旦模糊函数结束,焦点就会丢失,所以在模糊函数内设置焦点没有效果
替换
$("#rut").focus();
和
setTimeout(function() {
$("#rut").focus();
}, 0);
这将 "re-focus" 下一个事件循环中的元素
使用以下代码:
$("#focusedDiv").focus(function () {
....
});
使用那个:Demo
将您的 .focus()
移到那里:
$(this).delay(0).queue(function() {
$(this).focus().val("").dequeue();;
});
另外,我已经优化了你的代码。 $("#rut")
已替换为 $(this)
点击here!
从这里开始尝试。