【问题标题】:jQuery Validate method checking for special charactersjQuery Validate 方法检查特殊字符
【发布时间】:2013-02-19 03:17:33
【问题描述】:

我正在尝试(但失败)编写一个正则表达式语句,在我的 Javascript 表单验证中检查特殊字符,例如 !@#$%^&*()_+?'"{}[]。

我知道这可能已被问了 1000 次,但我面临着严重的时间压力。如果您不想回答下面的问题,并且可以向我指出上述问题的先前答案的方向,我将不胜感激。

在类似的注释中,谁能告诉我为什么当我输入小写“abc”等时出现以下错误?我很困惑。

jQuery.validator.addMethod("specialChars", function( value, element ) {
        var regex = new RegExp("^[a-zA-Z0-9]+$");
        var key = String.fromCharCode(event.charCode ? event.which : event.charCode);

        if (!regex.test(key)) {
           event.preventDefault();
           return false;
        }
    }, "please use only alphanumeric or alphabetic characters");

【问题讨论】:

  • pktangyue 我以为key只是一个变量名?它指的是什么?我想我可能已经从某个地方复制了它作为早期尝试。
  • 你为什么要编写一个已经存在于Validate插件中的方法?在additional-methods.js 文件中有一个名为alphanumeric 的规则。见:ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/…
  • 我认为你应该测试value,这是用户输入的。
  • @sparky 打败了我......还有你是如何让event.whichevent.preventDefault 进入表单字段的验证方法的?

标签: jquery regex jquery-validate


【解决方案1】:

不要从头开始编写自己的自定义方法,而是包含additional-methods.js 文件并使用alphanumeric 规则。

$(document).ready(function () {

    $('#myform').validate({
        rules: {
            field: {
                alphanumeric: true
            }
        }
    });

});

演示:http://jsfiddle.net/YsAKx/


如果您不想包含额外的外部文件,只需将默认的alphanumeric 方法复制出来...

jQuery.validator.addMethod("alphanumeric", function(value, element) {
    return this.optional(element) || /^\w+$/i.test(value);
}, "Letters, numbers, and underscores only please");

【讨论】:

    【解决方案2】:

    变化不大

    jQuery.validator.addMethod("specialChars", function( value, element ) {
            var regex = new RegExp("^[a-zA-Z0-9]+$");
            var key = value;
    
            if (!regex.test(key)) {
               return false;
            }
            return true;
        }, "please use only alphanumeric or alphabetic characters");
    
    1. 如果测试有效,则需要返回值 true
    2. 验证器不是事件处理程序,因此您不能使用event.preventDefault(),这必须在keypress 事件中完成。
    3. 您需要测试传递给 validate 方法的值。

    演示:Fiddle

    注意:由于您使用的是+ 通配符,因此文本框中至少需要一个字符,您可能需要使用required 规则将其拆分为两条规则,并将通配符更改为*

    【讨论】:

    • Arun:谢谢,这正是我需要的。
    • @hyperdouche 正如 Sparky 建议的那样,库中已经存在一个内置规则,建议使用它
    • 废话,好的,谢谢。在刷新页面之前,我已经写了我的回复并标记为正确。也许我会回去调查一下。
    • 很有帮助,返回 truefalse 拯救了我的一天。
    【解决方案3】:
    ^[a-zA-Z0-9;,.!@#$%:{}[]?"^&*()/\']*|[^&;<>\`]*
    

    您想要特殊字符在此 [] 大括号^[a-zA-Z0-9;,.!@#$%:{}[]?"^&amp;*()/\'] 中添加,而您不想在此处添加此部分[^&amp;;&lt;&gt;\]`

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 1970-01-01
      • 2015-11-17
      • 2011-05-29
      • 1970-01-01
      相关资源
      最近更新 更多