我有一个文本字段,我想只允许使用字母。所以我写下面的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>
答案 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>