我有一张表,其中用户可以输入最后一列的输入数字。评估此数量,如果不正常,则会显示alert()
消息,输入val()
设置为$ 0,00,同样的输入应该集中,但似乎是focus()
函数不起作用。
代码在我看来是正确的,当我用firebug进行调试时,有时候其他人也不会这样做。当我在firebug控制台$("ID").focus()
上输入时,它工作正常。我想知道世界上是否有这样一个人可以帮我解决这个问题!
$('#table [type=text]').val('$ 0,00').keyup(function () {
amf2005_BecameCurrency(this, 20);
}).blur(function () {
if (!validate($(this).val())) {
$(this).val('0,00');
$(this).focus();
}
amf2005_BecameCurrency(this, 20);
$(this).val("$ " + this.value);
});
答案 0 :(得分:0)
这是一个有根据的猜测!
在您提供的代码中,您在“模糊”事件的处理程序内调用“焦点”事件。我不确定这是否允许,但有一种简单的方法可以看。
尝试将$(this).focus()
替换为setTimeout(function() { $(this).focus(); }, 0)
使用延迟为零的setTimeout函数会使浏览器立即移动焦点,但代码将不再在模糊处理程序的上下文中执行。
另外,您提到了警报功能。仅供参考,有像jQuery UI这样的库提供了绘制风格化对话框作为页面一部分的功能。这些被认为优于使用警报功能。