2012-12-13 13 views
5

C'è qualche evento in jQuery per ascoltare le selezioni di input?jQuery: ottieni l'intervallo di selezione dell'ingresso

Ad esempio, supponiamo di aver scritto foo_bar in un input di testo. Quindi seleziono la parola pippo con il mouse. Quindi l'evento dovrebbe restituire 0, 2 (la posizione di stringa di foo).

Esiste un modo per farlo? Non so da dove iniziare, sto sfogliando le pagine dell'API jQuery ma non riesco a trovare nulla di utile.

Ho pensato di ascoltare gli eventi mousedown sull'input, quindi recuperare in qualche modo la posizione della stringa in cui si è verificato il clic (non sono sicuro se è possibile) e ottenere la posizione in cui è avvenuto il mouseup.

Eventuali informazioni, fonti o esempi saranno i benvenuti.

+0

Sede [uso-javascript-e-jquery-to-get-selezionata dall'utente-text] (http://mark.koli.ch/2009/09/use-javascript-and-jquery-to-get-user-selected-text.html) – Anujith

risposta

7

Edit:

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

Demo:http://jsfiddle.net/ZyDjV/1/


È possibile utilizzare il selezionare evento per questo:

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

Demo: http://jsfiddle.net/ZyDjV/

+0

C'è un modo per recuperare il testo selezionato o le sue posizioni? Sto ispezionando l'oggetto restituito ma non sembra memorizzare nulla – jviotti

+0

Vedere la risposta aggiornata e la demo. – techfoobar

+0

Ottimo e molto pulito. Grazie, – jviotti

2

vedere questo: 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

, è un'implementazione più pulita del codice nella pagina web che hai pubblicato. Ci proverò ora. A proposito, quanto cross-browser è questo? – jviotti