J'ai ce problème ennuyeux, je n'arrive pas à obtenir l'index de début et de fin du texte sélectionné dans une zone de texte, tout ce que j'ai est non défini comme ceci:
$('#myarea').selectionStart; // return undefined
Est-ce que j'ai fait quelque chose de mal?
Essayer:
$('#myarea')[0].selectionStart;
Pourquoi? Un sélecteur jQuery ne renvoie pas les éléments DOM réels, mais la collection encapsulée jQuery. jQuery rend les éléments DOM accessibles sous forme de tableau. Par conséquent, si vous souhaitez utiliser le premier élément correspondant (et dans ce cas, le seul, puisqu'il s'agit d'un ID), procédez comme indiqué ci-dessus.
Depuis la version 1.6 de jQuery, vous pouvez utiliser .prop () method:
Obtenir:
// always start at 0
var start = $('#myarea').prop('selectionStart');
var end = $('#myarea').prop('selectionEnd');
Ensemble:
$('#myarea').prop('selectionStart', 10);
$('#myarea').prop('selectionEnd', 15);
// or short hand by
$('#myarea').prop({
'selectionStart': 10,
'selectionEnd': 15
});
Pour gérer les sélections de texte, je vous recommande fortement le plugin fieldSelection
Un autre plug-in que vous pourriez utiliser, et le seul dont je sache qu'il gère correctement les sauts de ligne dans IE, est mon propre Rangy Inputs plugin.