2010-07-28 12 views
5

Mam bardzo łatwe pytanie. Niestety nie mogę znaleźć odpowiedzi.jQuery wielokrotny znak zastąpić

Zrobiłem 2 prostych funkcji wejściowych

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

Zmieniając wejście 1, chcę aby pojawić się w wyniku wejścia 2. Również chcę niektóre znaki zastępowane i chcę, aby po kolei znaki małych liter (aby użyć go jako adresu URL).

Więc zrobiłem następujący kod jQuery:

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

Działa to dobrze, z wyjątkiem kiedy wpisać ciąg znaków, który ma kilka razy ten sam znak do wymiany. Wtedy zastępuje się tylko za pierwszym razem.

Na przykład: Po wpisaniu danych wejściowych 1: "Informacje o tej firmie" spowoduje to wprowadzenie danych wejściowych 2: "o tej firmie". Powinno to być: "o tej firmie". Czy ktoś wie, co dzieje się nie tak w moim kodzie jQuery?

Odpowiedz

9

coś takiego:

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

Wow, to było ekstremum. I rozwiązałeś mój problem. Dziękuję Ci bardzo! –

+0

Nie ma problemu, widzę, że wiele osób ma tę samą odpowiedź. Zmieniłem '$ (" # i2 ")' z 'i' w nim (zgodnie z twoim przykładem) i dodałem wyrażenie regularne'/\ s/g' zamiast twojego '' "'. – jerone

+1

Upewnij się, że masz na myśli \ s zamiast "", różnica polega na tym, że \ s reprezentuje wszystkie białe znaki [\ f \ n \ r \ t \ v \ u00A0 \ u2028 \ u2028 \ u2028]. To może być w porządku z tobą, ale byłbym niedbały, gdybym o tym nie wspomniał. – Marc

2

To dlatego zastąpić wymaga globalnej flagi zastąpić wiele wystąpień.

Spróbuj

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

Oto bardzo blisko pytanie do Ciebie z dobrą odpowiedź:
Replacing spaces with underscores in JavaScript?

+0

Dziękuję bardzo za odpowiedź! Problem jest rozwiązany! –

0

to działa na mnie

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