防止用户输入<或者>进入表格领域

时间:2014-01-23 14:32:03

标签: javascript jquery regex

我试图阻止用户输入<或者>使用JavaScript进入我的表单字段。这是我到目前为止所做的:

$(document).on('keydown', function (e) {
    regex = new RegExp("\<|>");
    var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
    if (!regex.test(key)) {
        event.preventDefault();
        return false;
    }
});

它仍然允许这些角色,我该如何阻止它?

2 个答案:

答案 0 :(得分:5)

为什么要费心翻译呢?我喜欢保持简单:

$(document).on('keypress', function (e) {
    if ((e.which == 62) || (e.which == 60)) { // greater than or less than key pressed
        e.preventDefault();
    }    
});

编辑添加:

如果条件基于@Samsquanch反馈,则交替显示:

if ((String.fromCharCode(e.which) == '>') || (String.fromCharCode(e.which) == '<')) { // greater than or less than key pressed

答案 1 :(得分:3)

值得注意的两件事:

    所有浏览器中的所有密钥都不完全支持
  • keypress。你应该使用keydown或keyup
  • <>密钥代码因操作系统而异。和键盘布局。硬编码密钥代码不会一直有效

对于跨操作系统和跨键盘布局解决方案(虽然不是很干净),您可以这样做:

$(document).on('keyup', 'input, textarea', function (e) {
    regex = new RegExp("\<|>");
    var val = $(this).val();
    $(this).val(val.replace(regex, ''));
});

这会从keyup上的输入中删除<>个键。用户将看到这种情况发生,但它应始终捕获所需的键并剥离它们。