J’ai un champ de texte dans lequel j’écris du texte.
Par souci de simplicité, je souhaite que cette alert('Boom!')
Apparaisse chaque fois que je commence à écrire entre deux dollars.
Par exemple, j’ai un champ de texte vide et commence à taper (le curseur est un signe “|”)
Today is a really nice day|
rien ne se passe, commencez à taper
Today is a really nice day, $|$
toujours rien, mais maintenant, quand je commence à taper
Today is a really nice day, $someText|$
Une case d’alerte doit apparaître pour chaque lettre entre ces signes dollar.
Pourquoi ai-je besoin de ce genre de fonctionnalité? Je veux un aperçu en direct de l’équation (rendu MathJax) chaque fois que l’utilisateur commence à taper son équation, et je peux reconnaître que c’est une équation avec des signes $$ (tout ce qui est entre les deux est affiché).
EDIT: Plusieurs $$ sont possibles dans un champ de texte. Le script doit reconnaître celui qui est actuellement actif (la position du curseur est entre ses $ $).
Vous pouvez utiliser le plugin jQuery caret
http://examplet.buss.hk/download/download.php?plugin=caret.1.01
remarque: éditez et supprimez ces caractères Ôªø de la ligne 8
et replace
funcition. (ne pas remplacer quoi que ce soit mais utiliser l’index du motif correspondant)
$("#myText").bind("keyup", function(e){ var text = $(this).val(); var caret = $(this).caret().start; if(text && text.length > 0){ text.replace(/\$.*?\$/g, function(m, n){ if(caret > n && caret < (n + m.length)){ alert("BOOM"); } }); } });
démo: http://jsfiddle.net/xqXXb/
Je montre juste comment le faire. Vous pouvez améliorer cela.
utilisation
$("#myText").bind("keyup keydown change", function(e){ ...
pour un meilleur résultat.