簡體   English   中英

Javascript:跨瀏覽器解決方案,用於選擇焦點上文本框內的所有文本

[英]Javascript: cross browser solution for selecting all text inside a textbox on focus

我遵循以下功能:

  • 用戶單擊或標簽到文本框
  • 選擇文本框中的所有文本,除非文本框已經具有焦點,在這種情況下應該發生默認的單擊/選擇功能

這可能嗎?


這適用於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;

你的功能(第一個)。 這可能會修復其他瀏覽器。

另外,將event添加到函數sig:

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

你應該記得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/

如果你可以使用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();
});

取自此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM