【问题标题】:Prevent typing spaces in an HTML text box with jQuery使用 jQuery 防止在 HTML 文本框中输入空格
【发布时间】:2012-06-29 20:01:19
【问题描述】:

所以我有一个用户可以输入的HTML 表单。我如何使用 javascript/jQuery 立即无缝地从文本框中删除空格?我一直在研究.val() jQuery 方法并想出了这个:

$('input').keydown(function() {
    str = $(this).val();
    str = str.replace(/\s/g,'');
    $(this).val(str);
});

这对删除文本有奇怪的作用,并且空格仍然出现在击键时,它们只是在下一次击键时被删除。有什么建议吗?

【问题讨论】:

    标签: javascript jquery html input


    【解决方案1】:

    你可以通过检查按下的键是否是空格键并返回false来阻止它被添加:

    ​$("input").on("keydown", function (e) {
        return e.which !== 32;
    });​​​​​
    

    这是working example

    【讨论】:

    • @JacksonGariety - 它有什么问题/你所说的“gremlins”是什么意思?
    • 上面的代码中有隐藏的 HTML 实体。如果您从某个网页复制/粘贴它,那里会有一些隐藏的 HTML 垃圾。我手动输入并工作,谢谢。
    • @JacksonGariety - 哦,我明白了。我没有复制它,我在 JSFiddle 中编写并从那里粘贴(与我在答案中链接到的小提琴相同)。不确定 JSFiddle 添加了什么。
    • 是的,当我使用 JSFiddle 时,我倾向于得到 gremlins。
    • 它有时会做一些奇怪的事情(比如如果我按 Enter 它不会插入新行)。无论如何,我很高兴能帮上忙 :)
    【解决方案2】:

    尝试使用keyup

    Live Demo

    $('input').keyup(function() {
        str = $(this).val();
        str = str.replace(/\s/g,'');
        $(this).val(str);
    });
    

    【讨论】:

    • 这也添加并快速删除它,可见,而且你不能选择文本来删除它(使用 CMD+A)。 ://
    • 我觉得这个选项很好。因为它也会使复制和粘贴的空格无效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2012-07-17
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    相关资源
    最近更新 更多