Javascript:跨浏览器解决方案,用于选择焦点上文本框内的所有文本

我遵循以下function:

  • 用户点击或标签到文本框
  • 选择文本框中的所有文本,除非文本框已经具有焦点,在这种情况下应该发生默认的单击/选择function

这可能吗?


这适用于Firefox 5

$('input[type="text"]').live('focus', function () { this.select(); }); 

http://jsfiddle.net/HmQxZ/13/

Chrome和IE8只会瞬间选择所有文字


这适用于Chrome

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

http://jsfiddle.net/HmQxZ/12/

Firefox和IE8选择所有文本,但在后续单击时,文本仍保持选中状态。

*种类的作品,在文本框有焦点后,单击它可以在选择所有文本和能够点击闪烁的插入符号所在的位置之间切换。 这可能是可以接受的。

setTimeout它延迟一毫秒:

 $('input[type="text"]').live('focus', function() { var inp = this; setTimeout(function() { inp.select(); }, 1); }); 

http://jsfiddle.net/HmQxZ/14/

发生了什么事情是在您选择文本后设置选择的其他浏览器事件。 因此,等待一毫秒后,您将完成所有浏览器事件,然后选择文本。 现在没有什么会撤消它。

您可能想要添加

 event.preventDefault(); return false; 

你的function(第一个)。 这可能会修复其他浏览器。

另外,将event添加到函数sig:

 $('input[type="text"]').live('focus', function (event) { 

如果你可以使用jQuery那么你可以做类似的事情;

 $("#myInputField").focus(function(){ // Select input field contents this.select(); }); // Add this behavior to all text fields $("input[type=text]").focus(function(){ // Select field contents this.select(); }); 

取自HERE

你应该记得return false; event.stopPropagation(); event.preventDefault() return false; event.stopPropagation(); event.preventDefault() return false; event.stopPropagation(); event.preventDefault()如下:

 $('input[type="text"]').live('click', function (event) { this.select(); event.stopPropagation(); event.preventDefault(); return false; }); 

http://jsfiddle.net/7rYLV/