如何防止用户使用Javascript输入特定密钥

时间:2017-03-29 08:55:15

标签: javascript html user-interface

我有一个文本字段,我想只允许使用字母。所以我写下面的Javascript方法来防止其他密钥。不幸的是,我的文本字段允许uparrow(^)。 谁能告诉我如何限制uparrow(^)?

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>

6 个答案:

答案 0 :(得分:1)

您可以通过以下更简单的方式实现这一目标:

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>

答案 1 :(得分:0)

Input: Bananas
Output desired: Bans

^的键码是94 ..防止它..如果你想自己修理它 警告(密钥)在代码中,您将获得按下的密钥的代码。

答案 2 :(得分:0)

最优雅的方式(Safari不支持)是使用pattern元素的input属性。

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

了解更多only support two conversion flags

<德尔> 对于`javascript`方法,箭头键的代码是:     {       left_arrow:37,       up_arrow:38,       right_arrow:39,       down_arrow:40     } 在你的if条件下,你必须消除38和40。

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

更新正则表达式就足够了:

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

答案 3 :(得分:0)

使用jQuery,简单&amp;优雅:

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

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

答案 4 :(得分:0)

您应该尝试仅阻止您不想要的特定密钥。因此, keypress 事件会在此字符输入您的输入之前获得按下的键。您还可以使用 event.preventDefault()来阻止您不想要的特定密钥。

我将向您展示如何使用jQuery完成此操作。

$("input[name='yourinput']").keypress(function(event) {
    if ( event.keyCode == 94 ) {
        event.preventDefault();
    }
});

答案 5 :(得分:0)

这也有效

<div class="form-group">
   <label class="form-text">Travels Name</label>
   <h:inputText value="#{bean.travelName}" maxlength="50" onkeypress="/[a-zA-Z]/.test(event.key) || event.preventDefault()" />
</div>