2010-05-10 16 views
1

我希望我的网站上的输入字段在用户第一次点击时选择所有文本,但在IE8中,恢复正常。在FF中正常工作。jQuery专注于输入/文本区的内容 - 在IE8中无法正常工作

我的js代码:

$(document).ready(function() { //HTML DOM document is ready 
    // Add this behavior to all text fields 
    $("input[type='text'], textarea").live("focus", function(){ 
             // Select field contents 
             this.select(); 
             }); 
}); 

任何想法?我已经尝试在“.select()”之后添加“.focus()”,并且奇怪的是它可以工作,但是会在FF和IE中引发大量js错误。

由于

回答

2

尝试jQuery对象而不是DOM元素.select(),和事件更改为click。当你进入该字段时,默认情况下应选择文本。

$("input[type='text']").live("click", function(){ 
     // Select field contents 
     $(this).select(); 
    }); 

那么,这一个被踢我在后方的某些原因。我可以发誓我以前做过这件事,但无法弄清楚它是如何做到的。

这是我想出的最好的。它使用setTimeout()推迟.select(),直到click事件触发为止。也许有更好的方法?希望能帮助到你。

$('input[type=text]').live('focus', function() { 
    var $th = $(this); 
    setTimeout(function(){$th.select();}, 50); 
}); 
+0

这样做的问题是,现场花絮每次我点击 - 所以,如果用户点击到现场对其进行编辑(说来纠正一个电子邮件地址/拼写),他们不能阻止整个领域从每次都被选中。 – katebp 2010-05-12 09:06:20

+0

@katebp - 一种解决方案可能是跟踪哪个输入焦点放在一个变量中,然后在'click()'处理程序中测试是否最后有焦点。如果是这样,不要'select()'。我会在一分钟内更新我的答案。 – user113716 2010-05-12 22:35:20

+0

@katebp - 对不起,延迟。更新了我的答案。不知道它是不是最好的解决方案,但似乎在IE8中工作。让我知道结果如何。 – user113716 2010-05-12 23:24:44