2012-01-21 44 views
1

我有一個包含文本的輸入。當我點擊這個輸入時,文本的顏色就會改變。在輸入是例如。文本'你好朋友' - 當我點擊輸入的單詞末尾Hello,所以存在任何簡單的方法來設置光標的開始(在單詞Hello之前)?更改文本並在輸入中設置光標

$('#your_name').focus(function(){ 
    if($(this).val() == $(this).attr('title')){ 
     $(this).css('color', 'red'); 
    } 

    $(this).keyup(function() { 
     $(this).val(''); 
    }); 
}); 

當我開始鍵入文本到,我怎麼能刪除當前文本Hello buddy並在輸入只有「新」的文字?我正在嘗試使用keyup方法,但是我輸入的所有內容都被刪除。

回答

3

請參閱我的DEMO這裏。還修改了的jsfiddle ..看到here

編輯:您可以只使用el.setSelectionRange(index, index);設置插入符位置。

而且爲你,當你KEYUP,您可以使用.one方法,將只執行一次,刪除整個文本的第二個問題,

$(this).one('keydown', function() { 
     $(this).val(''); 
}); 
+0

但是當我點擊進入輸入,所以光標不在開始,當我鍵入輸入一個鍵,所以我需要的一切除了密鑰刪除 – user984621

+0

@ user984621:看到我更新的演示..也編輯你的小提琴http://jsfiddle.net/N9agf/5/ –

+0

它實際上只是刪除清晰的部分,不使用演示(請參閱演示中的控制檯) – noob

1

您可以使用輸入字段的selectionStart屬性來獲取脫字符的位置,然後您可以通過匹配該字段的value來檢查它是否位於單詞「Hello」的後面。然後,您可以使用setSelectionRange將插入符號設置爲某個位置。 setSelectionRange(0,0);會將其設置爲開頭。

編輯:我只是重讀你的問題,如果你只是想,當你在它再次鍵入刪除所有文字,你可以用select()選擇字段中的所有文本。如果您然後開始輸入,則會刪除所選文字。

+0

你能給我一個例子嗎?我嘗試'$(this).select(); $(this).val('');',但這不是正確的方法 – user984621

+0

請在某處放置一個實例,以便我們能夠理解您想要做什麼。 – timing

+0

[這裏是一個演示](http://jsfiddle.net/N9agf/3/) - 當我在輸入中點擊某個地方時,我需要光標在開始處,如果我點擊輸入例如。在關鍵字「a」上,所以我希望所有的輸入都移除,除了「a」 – user984621

相關問題