2011-01-20 38 views
31
anahtarını girin

anahtarının bir textarea içine girmesini engellemeye çalışıyorum, ancak çalışmıyor gibi görünüyor.jQuery:

$('#comment').keyup(function(event) { 
    if (event.text.charCodeAt() == '10') { 
    event.preventDefault(); 
    } 
}); 
+0

Etkinliğin tetiklendiğini sanmıyorum, '$ (' # comment ') 'istediğimi doğru yapıp yapmadığını nasıl anlarım? –

+1

Değişiklik olayına ve aynı zamanda diğer herkesin görüntülediği tuşa/aşağıya/basın öğesine kanca atmayı unutmayın. Burada her çözüm ile, insanlar hala kaldırmanız gerekir önlemek için, linebreaks th textarea içine yapıştırma;) –

cevap

65

Sana

Herkes doğru cevabı :)

$('#comment').keypress(function(event){ 

    if (event.keyCode === 10 || event.keyCode === 13) 
     event.preventDefault(); 

    }); 
sahip bu kodu deneyebilirsiniz jsfiddle.net, küçük gösteri yazdım
+2

@Bubby LOL başkasının kodunu kopyalayıp jsfiddle'a yapıştırmayı kabul etti mi? –

+9

Sadece bir not olarak; keyCode 10'a ihtiyaç duyulur çünkü iPhone'lar üzerindeki Safari, girişe basıldığında anahtar kodu 10 gönderir – Ben

+0

@Ben Test ettiğimde, 10 yerine 13 gönderir. Bununla ilgili bir belge var mı? Ben bir tane bulamıyorum. –

1

.keypress ile deneyin ve return false kullanın;

İyi şanslar!

5

keydown olay Kullanım event.keyCode:

$('#comment').keydown(function(event) { 
    if(event.keyCode == 13) return false; 
    //carry on... 
}); 
+0

Neden keydown olayı değil? –

+0

@ Šime Vidas Sanırım 'keydown' olayını kullanabilirsiniz. –

3
$('#comment').keypress(function(event) { 
    if (event.keyCode == 13) { 
     event.preventDefault(); 
    } 
}); 
+0

Wha? Enter tuşu için anahtar kodu "10" değil "13". –

+2

10, LF (çizgi beslemesi) ve 13 CR'dir (satır başı). İkisini de engellemeli. –

+1

@TomislavMarkovski: Hayır. KeyCode ** her zaman ** 13 Bkz. Örn. http://unixpapa.com/js/key.html – ThiefMaster

1

Burada verilen cevaplar Bir kişinin bir satır başı yazmasını engellemesini engelleyin, birisinin onu yapışmasını engelleyemezsiniz.

Metni kaldırmak için (javascript veya sunucu tarafında) metnin bazı işlemlerini yapmanız gerekir.

http://jsfiddle.net/we8Gm/

Ama soru şu, neden? Neden sadece tek satırlık bir giriş elemanı olduğundan otomatik olarak ilgilenen <input type="text"></input>'u kullanmıyorsunuz?

+0

Çünkü kutunun uzun olmamasına, geniş olmamasına ihtiyacım var. Sadece 50 px genişliğinde. –

+0

Şimdi uzun bir sıska girdi kullanacağını merak ediyorum. –

+0

Ajax sohbet widget'ı Tasarladım, böylece kullanıcı mesajı göndermek için enter tuşuna basabilir. –

11

keyup etkinliğini iptal edemezsiniz. Ancak, keydown ve keypress olaylarını iptal edebilirsiniz. belgelerinde, "Olay Bilgiler" başlığı altında, "iptal" fark "Hayır" keyup içindir: keydown kullanma

sen kadar iptal sağlar keypress'dan daha fazla anahtar, ancak anahtar kaldırıldıktan sonra iptal etmek istemiyorsanız, keypress istediğin şeydir. Neyse ki sizin için, giriş anahtarı, keypress etkinliğinin iptal edilebilir anahtarlarından biridir.