2010-08-23 22 views
5

Hangi karakterlerin yazılabileceğine dair sınırlandırılması gereken bir giriş metin alanına sahibim. Hatalı girdiye karşı bir savunma biçimi olarak, kullanıcının bile izin vermemeye çalışıyorum yanlış şeyler yazın. Girdi [a-zA-Z -._] karakterleri olabilir ve 32 karakterle sınırlıdır. html metin alanına özel karakter girişini önleme

<input id="aliasEntry" type="text" maxlength="32"> 

Gördüğünüz gibi

, ben zaten 32 karakter sınırı çözdün ve kullanıcı sınırına ulaşıldı sonra bir daha yazarak engellenir. Ama yanlış karakterlerin girmesini engellemekte sorun yaşıyorum.

şuna benzer şeyler yapmak() olay yakalayıcı jQuery'nin .keypress() ve .keydown kullanarak denedim: tarayıcılar daima yazılan karakteri eklemek olduğunu

$("#aliasEntry").keypress(function(e) 
{ 
    var code = e.which || e.keyCode; 
    // 65 - 90 for A-Z and 97 - 122 for a-z 95 for _ 45 for - 46 for . 
    if (!((code >= 65 && code <= 90) || (code >= 97 && code <= 122) || code == 95 || code == 46 || code == 45)) 
    { 
     var text = $("#aliasEntry").val(); 
     text = text.substring(0,text.length); 
     $("#aliasEntry").val(text); 
    } 
}); 

Ama bu sorunu budur olayın ele alınmasından sonra metin kutusuna, kodu ortadan kaldırmaya çalıştığım karakter ortadan kaldırılmaya başladı. Kullanıcıyı yazdıktan sonra tarayıcının karakteri metin kutusuna yerleştirmesini engellemenin bir yolu var mı?

+2

jQuery'yi kullanırken, tekrar ['e.which'] (http://api.jquery.com/event.which/) normalize etmeniz gerekmez. –

+0

Kullanıcının klavyesinin neden aniden çalışmayı durdurduğunu açıklayan bazı kullanıcı arayüzüne sahip olmanın en iyisi olacağını unutmayın. – derobert

+2

Sunucu tarafı doğrulamasını da yapmayı unutmayın. İstemci doğrulaması gerçekten başarısızdır (bu durumda tarayıcımdaki JavaScript'i kapatın) –

cevap

5

jQuery'yi kullanıyorsunuz, bkz. http://api.jquery.com/event.preventDefault/. Karakterin geçersiz olması durumunda, yalnızca e.preventDefault() numaralı telefonu arayın ve bu, varsayılan tarayıcı eyleminin gerçekleşmesini engellemelidir; bu durumda bu, bir karakterin eklenmesi olacaktır.

+0

Ve bunu 'tuşa basma' sırasında yapın; Opera'da 'keydown' sırasında varsayılan eylemi engelleyemezsiniz. –

+0

Yep harika çalışıyor. Etkinliğin durup durmayacağını anlamaya çalışmak için bu yöne bakıyordum, ama yanlış yöntemlerle uğraşıyordum. Teşekkürler! – JDC

0

function chText() 
{ 
    var str=document.getElementById("aliasEntry"); 
    var regex=/[^a-z]/gi; 
    str.value=str.value.replace(regex ,""); 
} 

Aşağıda bu kod herhangi karakter a-z ve A-Z

dışında girilmesine izin vermez bu

<input maxlength="32" onKeyUp="chText()" onKeyDown="chText()" id="aliasEntry"/> 

gibi girişinizi kullanın ve ona javascript yazma üzerine chText() işlevini yapmak

İlgili konular