2013-05-20 2 views
8

Я хочу ввести только значения символов внутри <textarea> и числовые значения в другом. Я смог создать функцию JavaScript, которая позволяет вводить числовые значения в <textarea> с использованием onkeypress. Это работает в Firefox и Chrome.Javascript Функция для ввода только алфавитов при нажатии клавиши

Для алфавитов Я создаю еще одну функцию JavaScript, используя свойство windows.event. Проблема только в том, что это работает только в Chrome, а не в Firefox.

Я хочу знать, как разрешить ввод только алфавитов с использованием события onkeypress, используемого для ввода только числовых значений?

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

_ "только значения символов" _ - Вы имеете в виду только буквы? Помните, что проверки на нажатия клавиш недостаточно, поскольку пользователь может копировать/вставлять или перетаскивать, не вызывая события нажатия клавиши. – nnnnnn

+0

вместо этого использовать регулярные выражения? – Nanda

+0

Вот несколько примеров символов: «1», «&», «a», «)», «W». Вы имеете в виду _letters._ – nnnnnn

ответ

0

привет попробовать ниже кода он работал для меня во всех браузерах, это позволяет номера и несколько специальных символов, таких как, + -(). в использовании текстового поля следующим образом

<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

спасибо за код, но я хотел ввести только алфавиты (нижний и верхний регистр) и некоторые специальные символы, такие как «,. + -:» и пробел между алфавитами ... так что можете ли вы отредактировать свой ответ соответственно... – Lucy

4

Если вам не нужно поддерживать старые браузеры, я бы использовал событие input. Таким образом, вы можете также улавливать не-альфа-символы, если пользователь вставляет текст в textarea.

Я немного почистил ваш HTML. Наиболее важные изменения произошли в событиях на и cnum. Обратите внимание, что событие в обоих случаях было изменено на 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 /> 

Предполагая, что вы хотите cname только принимать символы алфавита и cnum принимать только цифры, ваш JavaScript должен быть:

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

Этот код использует regular expressions, способ соответствовать шаблонов в строках.

1

Лучший Использует

<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)"/> 
Смежные вопросы