2017-03-29 85 views
0

我有一個文本字段,我想只允許使用字母表。所以我寫下面的Javascript方法來防止其他鍵。不幸的是我的文本字段允許uparrow(^)。 任何人都可以告訴我如何限制uparrow(^)?如何防止用戶使用Javascript輸入特定的密鑰

function onlyAlphabet(evt) { 
    var theEvent = evt || window.event; 
    var key = theEvent.keyCode || theEvent.which; 

    var keychar = String.fromCharCode(key); 
    var keycheck = /[a-zA-z\s]/; 

    if (!(key == 8 || key == 27 || key == 46 || key == 9 || key == 39)) // backspace delete escape arrows 
    { 
     if (!keycheck.test(keychar)) { 
      theEvent.returnValue = false;//for IE 
      if (theEvent.preventDefault) 
       theEvent.preventDefault();//Firefox 
     } 
    } 
} 

HTML代碼

<div class="form-group"> 
    <label class="form-text">Travels Name</label> 
    <h:inputText value="#{bean.travelName}" maxlength="50" onkeypress="return onlyAlphabet(event)" /> 
</div> 
+0

http://stackoverflow.com/questions/29823591/html-input-do-not-allow-numbers – BuildingJarl

+2

爲什麼不使用正則表達式呢? – Mamun

+0

Hi Mihir你檢查了我的答案嗎? – Mamun

回答

0

可以實現在像下面這樣的更簡單的方法:

function onlyAlphabet(inputVal) { 
 
    var patt=/^[a-zA-Z]+$/; 
 
    if(patt.test(inputVal)){ 
 
    document.getElementById('txtTravel').value = inputVal; 
 
    } 
 
    else{ 
 
    var txt = inputVal.slice(0, -1); 
 
    document.getElementById('txtTravel').value = txt; 
 
    } 
 
    
 
}
<div class="form-group"> 
 
    <label class="form-text">Travels Name</label> 
 
    <input id="txtTravel" type="text" maxlength="50" 
 
    oninput="onlyAlphabet(value)" /> 
 
</div>

0

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <title></title> 
 
\t <meta charset="utf-8" /> 
 
    <script> 
 
     function onlyAlphabet(evt) { 
 
      var theEvent = evt || window.event; 
 
      var key = theEvent.keyCode || theEvent.which; 
 

 
      var keychar = String.fromCharCode(key); 
 
      var keycheck = /[a-zA-z\s]/; 
 

 
      if (!(key == 8 || key == 27 || key == 46 || key == 9 || key == 39 || key == 94)) // backspace delete escape arrows 
 
      { 
 
       
 
        if (!keycheck.test(keychar)) { 
 
         theEvent.returnValue = false;//for IE 
 
         if (theEvent.preventDefault) 
 
          theEvent.preventDefault();//Firefox 
 
        } 
 
       
 
       
 
      } 
 
      else if(key==94) 
 
       theEvent.preventDefault(); 
 
     } 
 
    </script> 
 
</head> 
 
<body> 
 

 
    
 
    <input id="Text1" type="text" onkeypress="return onlyAlphabet(event)"/> 
 
</body> 
 
</html>

鍵代碼^ 94 ..阻止它。如果你想自己解決它把 警報(鍵)在代碼,您將在其中獲得按下按鍵的代碼。

0

最優雅的方式(在Safari中不支持)是使用input元素的pattern屬性。

<input pattern="[A-Za-z\s\^]+" type="text" /> 

更多here

對於`javascript`方法,對箭頭鍵碼爲: { LEFT_ARROW:37, up_arrow:38, RIGHT_ARROW:39, DOWN_ARROW: 40 } 在你的if條件中,你必須消除38和40.

哦,你的意思是^本身? :)))

這足以更新你的正則表達式:

var keycheck = /[a-zA-z\s\^]/; 
0

使用jQuery,簡單&優雅:

jQuery('#id').on('keypress', limitChars); 

function limitChars(e){ 
    return event.charCode >= 97 && event.charCode <= 122; 
}