2

これを実装するためのより良い方法があると確信していますが、それを理解することはできません。上部に常に必要な 2 つのフィールドがあるフォームがあります。次に、選択したときにさまざまなフィールドに読み込まれる一連のタブがあります (フォームの送信時に現在 DOM にあるものだけが送信されるように、読み込み中の HTML のチャンクを分離します)。私は jquery 検証プラグイン ( http://docs.jquery.com/Plugins/Validation ) を使用しています。これにより、新しいフィールドの各セットが読み込まれるときに検証ルール/メッセージをオブジェクトとして設定し、冗長なルールを削除してフィールドが変更されると、新しいものを追加します。問題は、必要なときに使用するためにすべてのルール/メッセージ オブジェクトを js に書き込む必要があり、ファイルが長く、非常に非効率的であることです。ここに私の疑似コードがあります:

<form>
    <input1 (always on page) />
    <input2 (always on page) />
    <ul id="nav-tabs">
        <li id="tab1"></li>
        <li id="tab2"></li>
        <li id="tab3"></li>
    </ul>
    <div id="dynamic-content">
        <!-- different form fields load in here from separate html files, all requiring different rules in addition to the 2 fields always on the page -->
    </div>
    <input type="submit" />
</form>

HTMLの各チャンクが設定されているときにルールをロードすることで、いくつかの解決策があるのではないかと思いますか? 誰かがこのようなことをしましたか?

助けてくれる人に感謝します。T

4

4 に答える 4

4

組み込みrules()メソッドを使用してルールを追加します。 ドキュメントを参照してください。

注:を呼び出した後に、このメソッドを呼び出す必要があります。.validate()

jsFiddle デモ

$("#form").validate({
    // my other options
});

// the following method must come AFTER .validate()

$(".myClass").each(function() {
    $(this).rules('add', {
        required: true,
        minlength: 5
    });
});

custom と組み合わせるには、次のようにしますmessages:.validate()...内のオプションとしてルールを追加する場合とは、形式が少し異なることに注意してください。

$(".myClass").each(function() {
    $(this).rules('add', {
        required: true,
        minlength: 5,
        messages: {
            required: "Required input",
            minlength: jQuery.format("At least {0} characters are necessary")
        }
    });
});

このメソッドは、フォームにフィールドを動的に追加する場合にも非常に役立ちます。

var myRule = {
    required: true,
    minlength: 5,
    messages: {
        required: "Required input",
        minlength: jQuery.format("At least {0} characters are necessary")
    }
}

$("#myform").append('<input type="text" name="four" /><br />');
$("[name='four']").rules('add', myRule);

jsFiddle デモ:

http://jsfiddle.net/kSFKE/10/

remove不要なフィールド入力を動的に破棄する場合は、ルールを削除するために使用する必要はありません。

于 2013-01-02T18:55:39.973 に答える
0

動的ルール変更のためのメソッドとサブメソッドをrules()持つメソッドもありますaddremove

http://docs.jquery.com/Plugins/Validation/rules#.22add.22rules

例(ドキュメントから):

$("#myinput").rules("add", {
 minlength: 2
});

多くの人は、フィールドでの授業もシンプルであることを認識していません。

rules object でブール値を使用する単純なルールの場合、クラスとして使用される同じルール名がフィールドを自動的に登録します。作成するメソッドについても同じことが言えます。

data-要素を追加/削除するときにルールを変更するのに役立つ属性を使用することも検討してください。新しい要素または古い要素をループし、属性を使用してメソッドdata-に解析できますrules()

于 2013-01-02T04:23:48.607 に答える
0

単純な検証だけが必要な場合はclass、それぞれの属性を使用して検証することができますinput

HTML

<input type="text" name="input1" class="required" />

Javascript

$("#Form").validate();

デモ

于 2013-01-02T23:07:15.893 に答える
-1

ルールを動的に適用する方法を尋ねられました。

    <?php
    $form_rules = array(
    'user_login' => array(
    'required' => true,
    'minlength' => 4)
    );
    ?>

次に、ページの先頭に

    <script>
        $(document).ready(function() {
            $('#portal_reg').validate({ // form id 
                'rules': <?php echo json_encode($form_rules); ?>
            });
        });
    </script>
于 2014-06-30T03:15:28.433 に答える