2010-07-28 19 views
5

Çok kolay bir sorum var. Maalesef cevabı bulamıyorum. jQuery çoklu karakter yerine

Sadece 2 basit giriş işlevlerini
Input 1:<br /><input type="text" id="i1" name="i1" /> 
Input 2:<br /> 
<input type="text" id="i2" name="i2" /> 

yapılan giriş 1, ben de girdi 2. Bazı karakterler yerini istediğiniz sonucu görünmesini izin istiyorum ve karakterleri küçük harf yapmak istiyorum değiştirirken (URL olarak kullanmak için).

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

Bu Birden katını yerine aynı karaktere sahip bir dize yazdığınızda dışında iyi çalışır:

yüzden aşağıdaki jQuery kodu yaptı. Sonra sadece ilk kez yerini alır.

Örneğin: Giriş 1'i yazarken: 'Bu şirket hakkında', giriş 2: 'about-this company' ile sonuçlanacaktır. Olmalıdır: 'Bu şirket hakkında'. JQuery kodumda neyin yanlış gittiğini bilen var mı? Böyle

cevap

9

şey:

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

Vay için çalışır, bu kadar hızlı aşırı oldu. Ve sen benim problemimi çözdün. Çok teşekkür ederim! –

+0

Sorun yok, birden çok kişinin aynı cevabı var. "$" ("# I2") 'yi,' i 'ile değiştirdim (örneğinize göre) ve "" "yerine regexp'/\ s/g' yi ekledim. – jerone

+1

'' yerine, yerine yazdığınızdan emin olun, fark, tüm boşlukları [\ f \ n \ r \ t \ v \ u00A0 \ u2028 \ u2029] temsil eder. Bu seninle iyi olabilir, ama bahsetmezsem mahrum olurum. – Marc

2

Bunun nedeni yerini birden çok örneklerini değiştirmek için bir genel bayrağını gerektirir.

İşte iyi cevap sizinkine oldukça yakın soru bu

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

deneyin:
Replacing spaces with underscores in JavaScript?

+0

Cevabınız için çok teşekkür ederim! Problem çözüldü! –

0

bu benim

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