2013-05-20 18 views
8

Sadece <textarea> içinde karakter değerlerini ve diğerinde sayısal değerleri girmek istiyorum. onkeypress kullanarak <textarea>'a yalnızca sayısal değerlerin girilmesine izin veren bir JavaScript işlevi yapabildim. Bu Firefox ve Chrome'da çalışır.Javascript Tuşa basıldığında yalnızca alfabe girmek için işlev

Alfabe için windows.event özelliğini kullanarak başka bir JavaScript işlevi oluşturuyorum. Tek sorun, bu yalnızca Chrome'da ve Firefox'ta değil.

Yalnızca alfabe değerlerinin yalnızca sayısal değerler girmek için kullanıldığında nasıl girileceğini öğrenmek istiyorum onkeypress olayı?

function isNumberKey(evt){ <!--Function to accept only numeric values--> 
 
    //var e = evt || window.event; 
 
\t var charCode = (evt.which) ? evt.which : evt.keyCode 
 
    if (charCode != 46 && charCode > 31 
 
\t && (charCode < 48 || charCode > 57)) 
 
     return false; 
 
     return true; 
 
\t } 
 
\t \t  
 
    function ValidateAlpha(evt) 
 
    { 
 
     var keyCode = (evt.which) ? evt.which : evt.keyCode 
 
     if ((keyCode < 65 || keyCode > 90) && (keyCode < 97 || keyCode > 123) && keyCode != 32) 
 
      
 
     return false; 
 
      return true; 
 
    }
<label for="cname" class="label">The Risk Cluster Name</label> 
 
<textarea id="cname" rows="1px" cols="20px" style="resize:none" placeholder="Cluster Name" onKeyPress="return ValidateAlpha(event);"></textarea> 
 
<br> 
 
<label for="cnum">Risk Cluster Number:</label> 
 
<textarea id="cmun" rows="1px" cols="12px" style="resize:none" placeholder="Cluster Number" onkeypress="return isNumberKey(event)"></textarea>

+3

_ "sadece karakter değerleri" kullanır? Tuşa basmayı doğrulamanın yeterli olmadığını unutmayın, çünkü kullanıcı bir tuşa basmaya neden olmadan kopyalayıp yapıştırabilir. – nnnnnn

+0

yerine normal ifadeler kullanıyor musunuz? – Nanda

+0

Bazı karakter örnekleri şöyledir: "1", "&", "a", ")", "W". Yani demek istediğim _letters._ – nnnnnn

cevap

0

selam tüm tarayıcılarda benim için çalıştı kodunun altına denemek, bu gibi numaraları ve birkaç özel karakterleri verir + -(). Metin kutusu kullanımda

şöyle
<asp:Textbox Id="txtPhone" runat="server" onKeyPress="return onlyNumbersandSpecialChar()">  </asp:Textbox> 

function onlyNumbersandSpecialChar(evt) { 
    var e = window.event || evt; 
    var charCode = e.which || e.keyCode; 
    if (charCode > 31 && (charCode < 48 || charCode > 57 || charCode > 107 || charCode > 219 ||   charCode > 221) && charCode != 40 && charCode != 32 && charCode != 41 && (charCode < 43 || charCode > 46)) { 
     if (window.event) //IE 
      window.event.returnValue = false; 
     else //Firefox 
      e.preventDefault(); 
    } 
    return true; 

    } 

</script> 
+0

kod için teşekkürler ama ben sadece alfabeler (alt ve büyük harf) ve ",. + -:" gibi bazı özel karakterler ve alfabe arasındaki boşluk gibi girmek istedim .... böylece cevabınızı düzenleyebilir misiniz buna göre ... – Lucy

4

ise eski tarayıcıları desteklemeniz gerekmez, input olayını kullanırdım. Bu şekilde, kullanıcı metni textarea'a yapıştırırsa, alfa olmayan karakterler de yakalayabilirsiniz.

HTML'nizi biraz temizledim. En önemli değişiklikler, cname ve cnum'daki olaylara yöneliktir. Her iki durumda da olayın oninput olarak değiştirildiğini unutmayın.

<label for="cname" class="label"> The Risk Cluster Name</label> 
<textarea id="cname" rows="1" cols="20" style="resize:none" placeholder="Cluster Name" oninput="validateAlpha();"></textarea> 
<label for="cnum">Risk Cluster Number:</label> 
<textarea id="cmun" rows="1" cols="12" style="resize:none" placeholder="Cluster Number" oninput="isNumberKey();"></textarea><br /><br /><br /> 

Eğer cname yalnızca numaralarını kabul alfabesinde karakterler ve cnum kabul etmek istiyorum varsayarsak, JavaScript olmalıdır:

function validateAlpha(){ 
    var textInput = document.getElementById("cname").value; 
    textInput = textInput.replace(/[^A-Za-z]/g, ""); 
    document.getElementById("cname").value = textInput; 
} 
function isNumberKey(){ 
    var textInput = document.getElementById("cmun").value; 
    textInput = textInput.replace(/[^0-9]/g, ""); 
    document.getElementById("cmun").value = textInput; 
} 

Bu kod, dizeleri desenleri maç için bir yol regular expressions kullanır. Eğer yalnızca harf anlamına mı -

1

En _

<input type="text" name="checkno" id="checkno" class="form-control" value="" onkeypress="return isNumber(event)"/> 

<input type="text" name="checkname" id="checkname" class="form-control" value="" onkeypress="return isAlfa(event)"/> 


function isNumber(evt) { 
    evt = (evt) ? evt : window.event; 
    var charCode = (evt.which) ? evt.which : evt.keyCode; 
    if (charCode > 31 && (charCode < 48 || charCode > 57)) { 
     return false; 
    } 
    return true; 
} 

function isAlfa(evt) { 
    evt = (evt) ? evt : window.event; 
    var charCode = (evt.which) ? evt.which : evt.keyCode; 
    if (charCode > 31 && (charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122)) { 
     return false; 
    } 
    return true; 
} 
2
function lettersOnly() 
{ 
      var charCode = event.keyCode; 

      if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || charCode == 8) 

       return true; 
      else 
       return false; 
} 

<input type="text" name="fname" value="" onkeypress="return lettersOnly(event)"/> 
İlgili konular