我想知道...如何只接受键盘上按字母顺序排列的按键..我正在使用jQuery .keypress方法...现在我想知道如何过滤传递的密钥......
我正在尝试为jQuery构建一个简单的自动完成插件...我知道一个关于jQuery的UI,但我想自己做...
提前感谢:)
答案 0 :(得分:2)
您可以将函数绑定到替换不在a-z范围内的任何内容的字段。
<input name="lorem" class="alphaonly" />
<script type="text/javascript">
$('.alphaonly').bind('keyup blur',function(){
$(this).val( $(this).val().replace(/[^a-z]/g,'') );
});
</script>
答案 1 :(得分:1)
在回调中,您可以查看事件的keyCode
属性。如果您想禁止输入密钥,只需return false
。例如:
$('#element').keypress(function(e)
{
if(e.which < 65 || e.which > 90) //65=a, 90=z
return false;
});
请注意,这不会很有效。用户仍然可以粘贴其他文本,或使用基于鼠标的输入设备或任何其他数量的东西。
我根据Tim Down的评论对此进行了编辑,并将keyCode
替换为which
,这在keydown
,keyup
和keypress
个事件中都是正确的
答案 2 :(得分:1)
以下内容将阻止在a-z和A-Z之外输入的任何字符进行注册。
$("#your_input_id").keypress(function(e) {
if (!/[a-z]/i.test(String.fromCharCode(e.which))) {
return false;
}
});
这不会阻止出现粘贴或拖动的文字。最可靠的方法是change
事件,只有在输入失去焦点后才会触发:
$("#your_input_id").change(function(e) {
this.value = this.value.replace(/[^a-z]+/gi, "");
});
答案 3 :(得分:1)
这对我有用,它只接受没有特殊字符或数字的字母
$("#your-input-here").keypress(function (e) { return validateAlphaKeyPress(e); });
function validateAlphaKeyPress(e) {
if (e.keyCode >= 97 && e.keyCode <= 122) {
return true;
}
return false;
}