2011-06-11 8 views
2

J'essaie de créer un champ de saisie textarea qui remplace automatiquement les caractères spécifiques par des caractères différents; exemple: lorsqu'un utilisateur tape un caractère "a", il doit être automatiquement remplacé par un caractère "o". Je suis nouveau jquery Pouvez-vous s'il vous plaît dire ce qui ne va pas avec le code suivant:Comment remplacer chaque caractère par un autre caractère dans Jquery

$(function() { 
    $('#myTextBox').keyup(function() { 
     $("a").replaceWith("o"); 
     $("z").replaceWith("N"); 
     $("y").replaceWith("M"); 
     $("p").replaceWith("f"); 
     $("v").replaceWith("K"); 
     $("b").replaceWith("P"); 
    }); 
}); 

Je vous remercie de votre aide, je vous remercie

modifier: vous

Merci à tous, ce qui suit travaillé comme prévu:

$(function() { 
    $('#myTextBox').keyup(function() { 

     $(this).val($(this).val().replace(/a/g, "o")); 

    }); 
}); 
+0

Le sélecteur jquery est destiné à sélectionner des éléments dom. Ne pas sélectionner de valeur dans une zone de texte vous devriez utiliser la fonction 'val()' pour obtenir les valeurs –

+0

RE: "est-ce correct?" Eh bien, l'avez-vous essayé dans votre application? – Kon

+0

J'ai changé le code d'une fonction val(), mais je ne sais pas si c'est correct .. –

Répondre

4

d'abord $("a") tous les éléments cible les fait d'ancrage sur la page, alors je Je devine que ce n'est pas ce que vous voulez (et d'autres n'existent même pas, sauf p, donc votre sélecteur ne retournera rien). Deuxièmement, vous pouvez utiliser regular expressions to do your replace sans code jQuery spécial.

Au lieu de:

$("a").replaceWith("o"); 

Essayez:

$(this).val($(this).val().replace(/a/g, "o")); 

Pour briser ce bas:

var oldValue = $(this).val(); 
var newValue = oldValue.replace(/a/g, "o"); 

// Set to new value 
$(this).val(newValue); 
+0

Cela est correct pour l'exemple donné, mais cela ne fonctionnera pas pour une solution avec des remplacements transitifs sans être fait avec soin (et il a gagné t travailler du tout si c'est cyclique à la fin). Imaginez ce qui se passe si vous avez aussi un remplacement de règle pour «o» mais vous faites le remplacement «a-> o» en premier et vous verrez ce que je veux dire. –

+0

@Platinum, bon point. Fonctionne dans ce cas, mais bon commentaire. – Kon

+0

merci pour le code, j'ai mis à jour le code –

3

http://jsfiddle.net/2fYdT/69/

$(document).ready(function() { 
    $(".normal").each(function() { 
     var text = $(this).html(); 
     text = text.replace(/"/g, ''); 
     $(this).html(text); 
    }); 
}); 

quelque chose comme ceci:

<div class="normal">Lorem "ipsum "dolor"</div> 

Résultat:

<div class="normal">Lorem ipsum dolor</div> 
Questions connexes