5

JQuery Validate プラグインでデータ属性を使用することは可能ですか。現在、クラス名を使用しています。

class="{required:true, messages:{required:'You must choose a site.'}}"` 

ただし、データ属性を使用する必要があります。

data-validate="{required:true, messages:{required:'You must choose a site.'}}"`

入力には、検証に関連しない複数のデータ属性が関連付けられている場合があります。

<input name="txt_txt001" type="text" maxlength="30" id="txt_txt001" class= "     
{required:true, messages:{required:'This field is required.'} }" data-
children="ddl_txt007,ddl_txt008" data-optionGroup="1" data-optionGroupParent=""  />

ケチャップ プラグインがこれを提供することは知っていますが、JQuery Validate を使用してページをセットアップするために多くの作業を行ったので、それに移動したくありません。

ありがとう

4

5 に答える 5

6

1.9.0 を検証するために、次の変更を行ってみてください。いくつかの改造を行ったので、行番号がずれている可能性がありますが、次のようになります。

149年頃:

var data = $.validator.normalizeRules(
    $.extend(
        {},
        $.validator.metadataRules(element),
        $.validator.classRules(element),
        $.validator.dataRules(element), // add this
        $.validator.attributeRules(element),
        $.validator.staticRules(element)
    ), element);

これを ln 782 前後の classRules の後に追加します。

// pretty much steal everything from the class based settings
dataRules: function(element) {
    var rules = {};
    var classes = $(element).data("validation");
    classes && $.each(classes.split(' '), function() {
        if (this in $.validator.classRuleSettings) {
            $.extend(rules, $.validator.classRuleSettings[this]);
        }
    });
    return rules;
},

追加のバリデータをクラス ルールに追加します。

jQuery.validator.addClassRules({
    phone: {
        phoneUS: true
    },
    zipcode: {
        zipcode: true
    },
    notFirstSelect: {
        notFirstSelect : true
    }
});

次に、for フィールドに属性を追加しdata-validationます。

<input type="text" data-validation="zipcode required" maxlength="10" class="inputText med" value="" name="zip" id="zip">

これは私にとって非常にうまく機能しています。この使用例については、http : //www.roomandboard.com/rnb/business_interiors/contactus/send.do をご覧ください。

于 2012-05-18T15:38:27.067 に答える
1

ASP.NET MVC 3 には、HTML5data-属性を使用した目立たない検証が組み込まれています。jquery.validate.unobtrusive.jsMVC 3 フレームワークのファイルは、data- 属性を解析し、ルールを に追加しますjquery.validate.js

詳細については、この記事を参照してください。

于 2011-09-27T11:36:12.310 に答える
1

これが古いことは知っていますが、関連するものを探しているときに偶然見つけました。受け入れられた答えがないので、まだ答えが必要なのかもしれません。とにかく、デビッドは本当に近かった。

var classes = $(element).data("validate");

これにより、data-validate 属性の内容が取得されます。そこから、クラス名で行っている/していたように、値を解析または渡すことができるはずです。

于 2013-01-09T22:17:17.587 に答える
1

私はプラグインを使用していませんが、ルールをフェッチする場所から属性を変更する組み込みオプションがないようです。しかし、圧縮されていないソースの行767を見ると、classRulesメソッドが表示されます。

このメソッドの行769には次のものがあります。

var classes = $(element).attr('class');

これを次のように変更してみてください。

var classes = $(element).attr('data-validate');

前述のように、私はこれをテストしていませんが、プラグインがデフォルトで提案しているように、この種のものをクラスよりもデータ属性に入れる方が論理的でセマンティックに思えます。

于 2011-09-26T18:38:06.967 に答える
0

データ属性を使用することをお勧めします。jquery.validate.unobtrusive.js はもう必要ありません。バージョン 1.11.0 以降、jquery.validate.js にはデフォルトで含まれています。構文は同じままです。ここでサンプルを見てください: http://denverdeveloper.wordpress.com/2012/09/26/some-things-ive-learned-about-jquery-unobtrusive-validation/

于 2014-02-25T13:47:25.057 に答える