2012-02-14 70 views
1

文本比方說,我們有一個輸入字段:<input type="text" id="id0"/>。我想用我的文本動態替換當前選擇的文本。什麼是實現使用jQuery或JavaScript的最佳方式?的JavaScript/jQuery的 - 更換輸入文字

更新:

我的意思是:在用戶鍵入的文本和選擇它的一部分,然後按下按鈕與另一指定的文本替換所選部分。

問候,拉法爾

+0

所以,你需要選擇一些文本,並找出世界衛生大會那就是 - 用一些其他文本替換它在輸入框中? – 2012-02-14 11:55:20

+0

什麼時候你想要替換什麼文本?任何事件都需要觸發?這將是有益的,如果我得到你的HTML和JS代碼 – run 2012-02-14 11:56:43

+0

你是否更換按鈕按或什麼?它將如何知道何時進行更換? – 2012-02-14 12:00:31

回答

1

大多數瀏覽器都支持文字輸入和文字區域selectionStartselectionEnd性能。但是,IE < 9沒有。你可以用我這個Rangy inputs plug-in,其標準化的IE < 9的缺乏支持的混亂,並提供了處理文本輸入和文字區域選擇方便的方法。使用它,代碼爲:

$("#id0").replaceSelectedText("SOME NEW TEXT"); 

如果文本框沒有焦點,你需要首先關注它:

$("#id0").focus(); 
+0

這個插件使用'document.execCommand(「insertText」)'來代替內容(這是很好的,因爲它正確地支持瀏覽器撤銷技工),但是,這並不在IE11工作。 – flu 2015-04-29 15:54:16

+0

@flu:是的,我知道。 IE有一個回退。但是,這確實意味着IE中的撤消堆棧被破壞。 – 2015-04-29 16:47:12

+0

你說得對。我正要爲這個撤消錯誤打開一張票。 – flu 2015-04-30 08:46:22

0
$('#id0').val('somenewtexthere'); 
+0

邁克,我想動態地替換當前的選擇,而不是整個輸入值。 – rafalry 2012-02-14 11:57:06

0

我不知道如果這能幫助你,但也許這樣:

var myMessage="My Text"; 
    $('#id0').val(myMessage); 
-3

的jQuery( 「#輸入ID0」)ATTR( 「值」 ,「我的文字」);

+0

-1因爲使用jQuery而不是簡寫+使用.attr(),因爲有一個函數提供更多的功能.val()將是正確的方法。 – 2012-02-14 11:56:26

+0

有一些框架必須使用jQuery而不是$,而我使用另一個版本(attr),因爲有其他人用val給出了答案。我的回答是正確的,沒有錯誤。我認爲你的意思是給我-1,我在這裏試圖幫助。 – DiAngelo 2012-02-14 12:01:16

+0

使用.attr()對此不好。看到這裏爲什麼:http://stackoverflow.com/a/3843317/851498。例如,這會導致一些表單值在提交時不會被更改(attr()更改一些jQuery屬性,而val()更改DOM元素值)。我不在乎'jQuery' :)。 – 2012-02-14 12:01:22

0

如果你想清除它,當你鍵入並打算離開時返回其文本使用此

$('#id0').focus(function() { $(this).val(''); });

$('#id0').blur(function() {$(this).val(' Your text '); });