2012-09-27 64 views
0

我的jquery代碼基本上驗證複製粘貼上的文本框的值 此代碼適用於多個頁面中的許多輸入字段。所有的頁面使用常見的JavaScript文件,並共同佈局頁使Jquery代碼通用?

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

回答

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(); 

而且你還可以鏈上的標識,如:

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

,並使用CSS選擇器

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

thanks..this works best! –

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