2012-12-13 100 views
5

jQuery中是否有任何事件來監聽輸入選擇?jQuery:獲取輸入選擇範圍

例如,假設我在文本輸入框中輸入了foo_bar。然後我用鼠標選擇foo這個詞。所以事件應該返回0, 2foo的字符串位置)。

是否有任何可能的方法來實現這一目標?我不知道從哪裏開始,我翻轉了jQuery API頁面,但似乎無法找到任何有用的東西。

我雖然關於在輸入上聆聽mousedown事件,然後以某種方式檢索發生點擊的字符串的位置(不知道是否有可能),然後獲取mouseup發生的位置。

任何信息,消息來源或例子將受到歡迎。

+0

參見[使用JavaScript的 - 和 - 的jquery到獲得用戶選擇的文本](HTTP:/ /mark.koli.ch/2009/09/use-javascript-and-jquery-to-get-user-selected-text.html) – Anujith

回答

7

編輯:

$('#foo').select(function(e) { 
    var start = e.target.selectionStart; 
    var end = e.target.selectionEnd; 
    console.log('Changed: ' + start + ' to ' + end); 
}); 

演示:http://jsfiddle.net/ZyDjV/1/


可以使用選擇此事件:

$('#foo').select(function(e) { 
    console.log('Selection Changed'); 
}); 

演示http://jsfiddle.net/ZyDjV/

+0

有沒有辦法檢索選定的文本或其位置?我正在檢查它返回的對象,但似乎沒有存儲任何東西 – jviotti

+0

查看最新的答案和演示。 – techfoobar

+0

非常乾淨。謝謝 – jviotti

2

參見此:http://jsfiddle.net/rT5vR/

var getSelected = function(){ 
var t = ''; 
if(window.getSelection) { 
    t = window.getSelection(); 
} else if(document.getSelection) { 
    t = document.getSelection(); 
} else if(document.selection) { 
    t = document.selection.createRange().text; 
} 
return t; 
} 

$("#myElement").select(function(eventObject) { 
alert(getSelected().toString()); 
}); 

+0

太棒了,這是您在發佈的網頁上更清晰的代碼實現。我現在就試一試。順便說一句,這是多少跨瀏覽器? – jviotti