【问题标题】:Jquery - Limit text in text input, not textareaJquery - 限制文本输入中的文本,而不是文本区域
【发布时间】:2011-10-24 18:39:51
【问题描述】:

使用 jquery 如何限制可以在文本字段中输入的字符数?不是指文本区域,只是一个普通的文本输入字段。我有一个表单并通过 iPad 使用 IOS5 查看 maxlength 属性由于某种原因被忽略。如果我使用 maxlength=10 我可以在这个字段中永远输入,它不会停在 10 个字符处。所以看起来我需要 jquery 来限制该字段。有什么建议吗?

更新

使用 maxedison 的示例和 Marc B 的建议,这是我想出的有效代码:

$('#textfld','#textform').keyup(function() {

    if($(this).val().length > 20) {

        var text = $(this).val().substring(0,20);
        $(this).val(text);

    }

});

【问题讨论】:

    标签: jquery ipad ios5


    【解决方案1】:

    如果该字段中已经有 10 个字符,您需要绑定到该字段的 keydown 事件并阻止其输入字符:http://jsfiddle.net/j6tJ3/

        $('input').keydown(function(e){
            if($(this).val().length > 9 && e.which !== 8 && e.which !== 46){ //if it's too long and the key pressed isn't backspace or delete
                return false;
            }
        });
    

    【讨论】:

    • 如果字符串达到最大长度,这将防止有人删除字符。最好是检查 keyup 并用 9char 子字符串替换字段的值,如果它超过限制。
    • 好点。我修改了 IF 语句以允许退格键和删除键。使用 keyup 不是一个很好的选择,因为您会看到密钥被输入然后被删除。我的解决方案现在无法处理的一种情况是,如果有人尝试复制和粘贴更长的字符串。如果e 属性的metaKey 值为true,则可以通过禁止输入字符以及禁用右键单击来解决此问题。但我认为这太过分了,最好在提交表单之前简单地检查值,并在存在问题时提醒用户。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多