全名的Jquery验证

时间:2011-08-04 11:06:48

标签: jquery validation

我使用以下代码验证字母表,但它不允许返回空格或删除键。如果您有任何想法,请建议。提前谢谢。

$('input#ClientA_FullName').keydown(function (e) {
        if (String.fromCharCode(e.keyCode).match(/[^a-zA-Z ]/g)) {
            return false;
        }
    });

4 个答案:

答案 0 :(得分:1)

Try This
$("#ValuationName").bind("keypress", function (event) {
    if (event.charCode!=0) {
        var regex = new RegExp("^[a-zA-Z ]+$");
        var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
        if (!regex.test(key)) {
            event.preventDefault();
            return false;
        }
    }
});

答案 1 :(得分:0)

我想我找到了解决方案。 请查看http://jsfiddle.net/Mq7mv/的工作样本。

您需要按如下方式更改代码:

$('input#ClientA_FullName').keydown(function (e) {
if ((e.keyCode != 8 /*backspace*/ || e.keyCode != 46 /*delete*/) &&
String.fromCharCode(e.keyCode).match(/[^a-zA-Z ]/g) == null) {
        return false;
    }
});

答案 2 :(得分:0)

keydown事件上进行验证肯定会有效,如果这真的是你想做的事情。但是,您要检查的keydown事件有很多特殊情况。只需检查退格删除是不够的。您应该允许其他键。例如,左箭头和右箭头,ctrl + x,v和c(正如有人在上面的评论中所述),甚至是shift键。此外,还有一些条件,比如有人按住1键,需要考虑,因为这只会触发一个事件。

更好的选择是验证blur事件中的字段。该事件在场失去焦点之前触发(光标移出它)。验证此事件将允许您将字段的值检查为完整名称(因为,大多数人会将名称放入字段,然后转到下一个字段)。您不必捕获一大堆特殊条件,只需获取值,查看它是否有效,然后继续。

代码与您现在的代码非常相似,

$('input#ClientA_FullName').blur(function(e) {
    var val = $(this).val();

    if (val.match(/[^a-z ]/gi)) //you matched an invalid character
    {
        alert("Client A Full Name is invalid");
        return false;
    }
});

值得注意的是,检查a-z和空格确实不是对“全名”字段的有效检查。有很多人在他们的名字中有一个撇号(例如“O'Brein”),大肆宣传(女性结婚并用他们的名字命名,“Nancy Jones-Smith”),句号(“TJ史密斯”)等等更不用说全局名称了,你可能在名字中有角色强调(变音符号等)。您的验证(以及我给您的验证示例)不允许使用这些字符,并且无法将这些名称输入您的系统。

对于健壮的名称验证系统,您需要的不仅仅是检查a-z和空格。我将重新评估使用完全正确的字符获取名称对系统功能的重要性。可以在用户上输入一些正确输入名称的责任。

答案 3 :(得分:0)

我不知道任何有表格的地方:你的名字无效!那么为什么要对它进行验证呢?而是添加长度验证。它必须至少有1个字母,没有最大值,或者如果必须,可能是255,因为在某些国家/地区确实存在长名称。如果有人不想告诉他的名字,他仍然可以输入zzzzzzzzzzz。世界上有很多不同的字母表,如西里尔字母,阿拉伯字母,中文字母。最好是只进行长度验证并使mysql_real_escape_string函数阻止SQL注入(如果你使用的是mysql)。 Javascript不会保护你。如果用户想要他仍然可以将任何类型的数据放入POST。只需保存名称,但只需保存SQL注入。