如果没有所需的值,则将文本框聚焦在焦点上

时间:2011-12-02 14:10:57

标签: javascript jquery focus

如果没有所需的值,我正在关注文本框。执行此功能后,文本框不会重新聚焦。但是它正确警告(alert("Must be 1");)。

$("#textbox").blur(function(event){
       if ($(this).text != "1"){
          event.preventDefault();
          alert("Must be 1");
          $(this).focus(); 
        }
});

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

你可以这样做:

$("#textbox").blur(function(event){
       var tb = this;
       if ($(this).val() != "1"){
          event.preventDefault();
          alert("Must be 1");
          setTimeout( function() { $(tb).focus(); }, 1);
        }
});

通过将“.focus()”调用置于超时状态,可以在单独的事件循环中进行切换。另请注意,您试图错误地获取值(“。text”),并且还必须保留对“tb”中元素的引用。

我怀疑这可能不适用于Safari。 Safari 真的不愿意服从“.focus()”调用,并且它被“alert()”搞糊涂了。当然,如果您通过其他方式向用户发送消息(并且请这样做:-),那么它可能会起作用。