0

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

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("");
}
4

2 回答 2

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("");
        }
    });
于 2012-09-27T08:06:11.630 回答
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();
于 2012-09-27T08:10:21.613 回答