0

私の Jquery コードは基本的に、コピー アンド ペーストでテキスト ボックスの値を検証します。このコードは、複数のページの多くの入力フィールドに適用されます。すべてのページは、共通の JavaScript ファイルと共通のレイアウト ページを使用します。

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

これをすべてのページに記述する代わりに、このコードをより汎用的にする方法はありますか?? つまり、コードの次の部分は、レイアウト ページまたは JavaScript ページのどこかに 1 回だけ記述できますか??

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 のすばらしい点の 1 つです。グローバル 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 に答える