2010-07-28 5 views
5

J'ai une question très facile. Malheureusement, je ne peux pas trouver la réponse.jQuery caractères multiples remplacer

Je viens de faire 2 fonctions d'entrée simples

Input 1:<br /><input type="text" id="i1" name="i1" /> 
Input 2:<br /> 
<input type="text" id="i2" name="i2" /> 

Lors d'un changement d'entrée 1, je veux laisser apparaître le résultat dans l'entrée 2. Je veux aussi des personnages remplacés et je veux faire les caractères minuscules (afin de l'utiliser comme une url).

Je fait le code jQuery suivant:

$("#i1").keyup(function() { 
var ptitle = $("#i1").val(); 
$("#2").val(ptitle.replace(" ", "-").toLowerCase()); 
}); 

Cela fonctionne bien, sauf quand je tape une chaîne qui a plusieurs fois le même caractère à remplacer. Ensuite, il ne remplace que la première fois. Par exemple: Lorsque je saisis l'entrée 1: "À propos de cette société", il en résultera l'entrée 2: "à propos de cette entreprise". Ce devrait être: 'About-this-company'. Est-ce que quelqu'un sait ce qui ne va pas dans mon code jQuery?

Répondre

9

Quelque chose comme ceci:

$("#i1").keyup(function() { 
    var ptitle = $(this).val(); 
    $("#i2").val(ptitle.replace(/\s/g, "-").toLowerCase()); 
}); 
+0

Wow, c'était rapide extrême. Et vous avez résolu mon problème. Merci beaucoup! –

+0

Pas de problème, je vois que plusieurs personnes ont la même réponse. J'ai changé le '$ (" # i2 ")' avec le 'i' dedans (accourding à votre exemple) et j'ai ajouté le regexp'/\ s/g' au lieu de votre '" "'. – jerone

+1

Soyez sûr que vous voulez dire \ s au lieu de '', la différence est que \ s représente tout espace [\ f \ n \ r \ t \ v \ u00A0 \ u2028 \ u2029]. Cela peut vous convenir, mais je m'en voudrais de ne pas le mentionner. – Marc

2

C'est parce que remplacer requiert un indicateur global pour remplacer plusieurs instances.

Essayez cette

$("#i1").keyup(function() { var ptitle = $("#i1").val(); 
     $("#2").val(ptitle.replace(/ /g, "-").toLowerCase()); 
}); 

est ici une question assez proche de la vôtre avec une bonne réponse:
Replacing spaces with underscores in JavaScript?

+0

Merci beaucoup pour votre réponse! Le problème est résolu! –

0

cela fonctionne pour moi

$(function(){ 
    $("#i1").keyup(function() { 
    var ptitle = $("#i1").val(); 
    $("#i2").val(ptitle.replace(/ /g,"-").toLowerCase()); 
    }); 
});