2013-05-20 4 views
8

<textarea> 안에 문자 값을 입력하고 다른 문자 값을 입력하고 싶습니다. 나는 숫자 값을 <textarea>에 입력 할 수있는 JavaScript 함수를 onkeypress을 사용하여 만들 수있었습니다. 이것은 Firefox와 Chrome에서 작동합니다.Javascript 키 누르기에서 알파벳 만 입력하는 기능

알파벳의 경우 windows.event 속성을 사용하여 다른 JavaScript 함수를 만듭니다. 문제는 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을 약간 정리했습니다. 가장 중요한 변경 사항은 cnamecnum의 이벤트입니다. 두 경우 모두 이벤트가 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을 수용 할 가정, 자바 스크립트가 있어야한다 :

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