web-dev-qa-db-fra.com

selectionStart-End avec textareas

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?

31
Dennis

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.

76
Paolo Bergantino

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
});
12
Foo

Pour gérer les sélections de texte, je vous recommande fortement le plugin fieldSelection

2
CMS

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.

0
Tim Down