使Jquery代码通用吗?

时间:2012-09-27 08:02:31

标签: javascript jquery asp.net-mvc-3

我的Jquery代码基本上验证了复制粘贴时文本框的值 此代码适用于多个页面中的许多输入字段。所有页面都使用通用JavaScript文件和通用布局页面

var regex = /^[A-Za-z0-9AEIOUaeiou\.\-\~\`\'']*$/;
$('#InputField1').bind('input propertychange', function () {
    var value = $(this).val();
    if (!regex.test(value)) {
        $(this).val("");
    }
});

而不是在每个页面上写这个,有没有办法让这个代码更通用?也就是说,代码的以下部分是否只能在布局页面或JavaScript页面上的某处写入?

var value = $(this).val();
if (!regex.test(value)) {
    $(this).val("");
}

2 个答案:

答案 0 :(得分:3)

使它全部通用。所有验证元素都应具有相同的css类,例如.requires-validation以识别它们。然后您可以通用方式选择它们:

    var regex = /^[A-Za-z0-9ĀĒĪŌŪāēīōū\.\-\~\`\'']*$/;
    $('.requires-validation').bind('input propertychange', function () {
        var value = $(this).val();
        if (!regex.test(value)) {
            $(this).val("");
        }
    });

答案 1 :(得分:1)

这是jQuery的一个很棒的东西。您可以在全局JavaScript文件中执行此操作:

(function($){  
 $.fn.validatePropertyChange = function() {  

    return this.each(function() {
         var self = $(this);
         var regex = /^[A-Za-z0-9ĀĒĪŌŪāēīōū\.\-\~\`\'']*$/;
             $(self).bind('input propertychange', function () {
             var value = $(this).val();
             if (!regex.test(value)) {
                  $(this).val("");
             }
          });
    });  
 };  
})(jQuery);

然后打电话:

$('#InputField1').validatePropertyChange();

你也可以链接ID,例如:

$('#InputField1, #InputField2').validatePropertyChange();

并使用CSS选择器

$('.required-field').validatePropertyChange();