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

如何防止用户使用Javascript输入特定密钥,javascript,html,user-interface,Javascript,Html,User Interface,我有一个文本字段,只允许使用字母。所以我编写了下面的Javascript方法来防止其他键。不幸的是,我的文本字段允许向上箭头(^)。 谁能告诉我如何限制向上箭头(^) html代码 <div class="form-group"> <label class="form-text">Travels Name</label> <h:inputText value="#{bean.travelName}" maxlength="50" onkeyp

我有一个文本字段,只允许使用字母。所以我编写了下面的Javascript方法来防止其他键。不幸的是,我的文本字段允许向上箭头(^)。 谁能告诉我如何限制向上箭头(^)

html代码

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

游记名称

仅限功能参数(evt){
var theEvent=evt | | window.event;
var key=theEvent.keyCode | | theEvent.which;
var keychar=String.fromCharCode(key);
var-keycheck=/[a-zA-z\s]/;
如果(!(键==8 | |键==27 | |键==46 | |键==9 | |键==39 | |键==94))//退格删除转义箭头
{
如果(!keycheck.test(keychar)){
theEvent.returnValue=false;//对于IE
if(theEvent.preventDefault)
theEvent.preventDefault();//Firefox
}
}
否则如果(键==94)
theEvent.preventDefault();
}

仅限功能参数(evt){
var theEvent=evt | | window.event;
var key=theEvent.keyCode | | theEvent.which;
var keychar=String.fromCharCode(key);
var-keycheck=/[a-zA-z\s]/;
如果(!(键==8 | |键==27 | |键==46 | |键==9 | |键==39 | |键==94))//退格删除转义箭头
{
如果(!keycheck.test(keychar)){
theEvent.returnValue=false;//对于IE
if(theEvent.preventDefault)
theEvent.preventDefault();//Firefox
}
}
否则如果(键==94)
theEvent.preventDefault();
}
最优雅的方式(Safari不支持)是使用
输入元素的
模式
属性

<input pattern="[A-Za-z\s\^]+" type="text" />
最优雅的方式(Safari不支持)是使用
input
元素的
pattern
属性

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

使用jQuery,简单而优雅:

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

function limitChars(e){
     return event.charCode >= 97 && event.charCode <= 122;
}
jQuery('#id')。on('keypress',limitChars);
函数限制字符(e){

使用jQuery返回event.charCode>=97&&event.charCode,简单而优雅:

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

function limitChars(e){
     return event.charCode >= 97 && event.charCode <= 122;
}
jQuery('#id')。on('keypress',limitChars);
函数限制字符(e){

return event.charCode>=97&&event.charCode您可以通过以下更简单的方式实现这一点:

函数onlyAlphabet(inputVal){
变量patt=/^[a-zA-Z]+$/;
if(部分测试(输入值)){
document.getElementById('txtTravel')。value=inputVal;
}
否则{
var txt=inputVal.slice(0,-1);
document.getElementById('txtTravel')。value=txt;
}
}

游记名称

您可以通过以下更简单的方式实现:

函数onlyAlphabet(inputVal){
变量patt=/^[a-zA-Z]+$/;
if(部分测试(输入值)){
document.getElementById('txtTravel')。value=inputVal;
}
否则{
var txt=inputVal.slice(0,-1);
document.getElementById('txtTravel')。value=txt;
}
}

游记名称

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

我将向您展示一个很好的示例,说明如何使用jQuery实现这一点

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

您应该尝试只阻止不需要的特定键。因此,keypressevent在输入此字符之前获取按下的键。您还可以使用event.preventDefault()阻止不需要的特定键

我将向您展示一个很好的示例,说明如何使用jQuery实现这一点

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


游记名称
这同样有效


游记名称

为什么不使用正则表达式?Hi-Mihir,你检查我的答案了吗?为什么不使用正则表达式了吗?Hi-Mihir,你检查了我的答案了吗?请提供一个解释。不鼓励只使用代码的答案。请提供一个解释。不鼓励只使用代码的答案。