2013-05-20 8 views
8

Chcę wprowadzić tylko wartości znakowe wewnątrz <textarea> i wartości numeryczne w innym. Udało mi się utworzyć funkcję JavaScript, która pozwala tylko na wprowadzanie wartości numerycznych w <textarea> przy użyciu onkeypress. Działa to w przeglądarkach Firefox i Chrome.Javascript Funkcja wprowadzania tylko liter alfabetu

W przypadku alfabetów tworzę inną funkcję JavaScript z użyciem właściwości windows.event. Jedynym problemem jest to, że działa tylko w Chrome, a nie w Firefoksie.

Chciałbym wiedzieć, jak zezwolić na wprowadzanie tylko alfabetów przy użyciu zdarzenia onkeypress, które jest używane do wprowadzania tylko wartości numerycznych?

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

_ "tylko wartości znaku" _ - Czy masz na myśli tylko litery? Pamiętaj, że sprawdzanie przy naciśnięciu klawisza nie jest wystarczające, ponieważ użytkownik może kopiować/wklejać lub przeciągać i upuszczać bez powodowania zdarzenia keypress. – nnnnnn

+0

zamiast tego użyj wyrażeń regularnych? – Nanda

+0

Oto kilka przykładów znaków: "1", "&", "a", ")", "W". Masz na myśli _letters._ – nnnnnn

Odpowiedz

0

hi spróbować poniżej kod pracował dla mnie we wszystkich przeglądarkach, pozwala liczb i kilku znaków specjalnych, takich jak + -(). w użytku textbox następująco

<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

dzięki za kod, ale chciałem wprowadzić jedynie alfabety (małe i duże litery) i niektóre znaki specjalne, takie jak ",. + -:" i spację między literami .... więc możesz edytować odpowiedź odpowiednio... – Lucy

4

Jeśli nie musisz obsługiwać starszych przeglądarek. Używam zdarzenia input. W ten sposób możesz również przechwytywać znaki inne niż alfa, jeśli użytkownik wklei tekst do textarea.

Usunąłem trochę Twój HTML. Najważniejsze zmiany dotyczą wydarzeń pod numerami cname i cnum. Zwróć uwagę, że zdarzenie w obu przypadkach zostało zmienione na oninput.

<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 /> 

Zakładając chcesz cname tylko akceptować znaki alfabetu i cnum zaakceptować tylko numery, JavaScript powinno być:

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; 
} 

Ten kod wykorzystuje regular expressions, sposób pasujące do wzorców w ciągach znaków.

1

Najlepszy Używa

<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)"/> 
Powiązane problemy