如何只接受字母按键(用于“自动完成”目的)

时间:2010-10-02 20:09:00

标签: javascript jquery

我想知道...如何只接受键盘上按字母顺序排列的按键..我正在使用jQuery .keypress方法...现在我想知道如何过滤传递的密钥......

我正在尝试为jQuery构建一个简单的自动完成插件...我知道一个关于jQuery的UI,但我想自己做...

提前感谢:)

4 个答案:

答案 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>

来源:Allow text box only for letters using jQuery?

答案 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,这在keydownkeyupkeypress个事件中都是正确的

答案 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;
}