2010-09-27 19 views
1

Je veux réaliser une version web python regexbuddy, et je rencontre un problème, comment mettre en évidence des valeurs de correspondance de couleur différente (basculer entre le jaune et le bleu) dans une zone de texte, il y a une démo ce que je veux exactement sur http://regexpal.com, mais j'étais un novice sur js, je ne comprenais pas sa signification de code. des conseils est appréciécomment mettre en évidence une partie de textarea html code

alt text

+0

Ajouté Tag: javascript, cela semble être une question sur la façon de mettre en évidence une zone de texte en utilisant javascript. – pyfunc

Répondre

1

Il y a un élément pre sur la zone de texte. Ainsi, lorsque vous tapez quelque chose, il copie l'entrée sur l'élément pre, en appliquant des filtres.

Par exemple:

<pre id="view"></pre> 
<textarea id="code"></textarea> 

Lorsque vous tapez sur #code il copie la valeur, l'application de filtres et en ajoutant le code HTML à l'#view.

var code = document.getElementById("code"); 
var pre = document.getElementById("pre"); 
(code).onkeyup = function(){ 
    val = this.value; 
    val = YourRegex(val); 
    (pre).innerHTML = val; 
}; 

YourRegex serait une méthode pour correspondre à la regex et retourner une partie du contenu analysé à l'pre, vous permettant de personnaliser l'apparence du textarea (qui est en fait un élément au-dessus).

function YourRegex(val) 
{ 
    // This function add colors, bold, whatever you want. 
    if (/bbcc/i.test("bbcc")) 
     return "<b>" + val + "</b>"; 
} 
0

@ La solution de BrunoLM est excellente, mais pourrait nécessiter plus de piratage que vous ne le souhaitez. Si vous êtes intéressé (et si jQuery est déjà dans votre pile), le plug-in suivant peut être utile de jeter un oeil à:

http://garysieling.github.io/jquery-highlighttextarea/

+0

Est-ce que le downvoter peut fournir une raison pour laquelle ce n'est pas une bonne réponse? Pour un "newbie on js" (sic), cela semble être une réponse raisonnable. – rinogo

0

Pour gagner du temps, vous devriez envisager d'utiliser une bibliothèque existante pour cette exigence.

Citation de here:

Comme éléments textarea ne peuvent pas rendre HTML, ce plugin vous permet de mettre en évidence le texte à l'intérieur des éléments textarea.

jQuery highlightTextarea.

Démo: Codepen

Utilisation:

$context.highlightTextarea(options); 
+0

Vous pouvez envisager de créer un extrait de pile au lieu de créer un lien vers Codepen. De cette façon, vous pouvez l'exécuter directement sur Stack Overflow. – Tunaki

+0

Julian, vous devriez divulguer que l'article a été écrit par vous. Aussi, je tiens à souligner que le plugin spécifique que vous avez recommandé est exactement le même que celui que j'ai signalé en 2013 ... Pas grave, mais il aurait probablement été plus prévenant d'ajouter un commentaire à mon répondre plutôt que downvoting ma réponse et en ajoutant votre propre ... – rinogo

+0

@rinogo Ce n'est pas une promotion d'un projet. Je viens de nommer l'article car il y a une description pourquoi il n'est pas possible d'utiliser une librairie de surlignage normale. Cependant, j'ai mis à jour ma réponse pour ne pas ressembler à une promotion.À propos de votre réponse: Bien que vous fournissiez un lien vers un projet qui résoudrait le problème, vous ne fournissez pas d'exemple (Codepen, JSFiddle, StackOverflow Snippet) ou d'exemple d'utilisation. – dude

Questions connexes