6

ルールが最初に設定されたときに、jQuery Validator プラグインが dom にまだ存在しない要素を検証できるかどうか疑問に思っています。

.Rules("add", therules) メソッドを呼び出すと、dom に現在存在する要素にのみルールがアタッチされます。私がいくつか作成する場合。検証は起動しません。何かご意見は?

私が使用しているバリデーターのホームページ: http://bassistance.de/jquery-plugins/jquery-plugin-validation/

新しい要素はhttp://ejohn.org/blog/javascript-micro-templating/で作成されています

基本的に ajax 呼び出しがあり、サーバーは一連の json (ajaj?) を返します。この json は resig のテンプレート エンジンを介して供給されます。テンプレートの例は次のようになります。

<script type="text/html" id="ProductsTemplateEdit">
    <td>
        <input type="hidden" value="<#= item.ID #>" id="Edit.ID" name="Edit.ID" />
        <input type="text" value="<#= item.Price#>" id="Edit.Price" name="Edit.Price" />
    </td>
</script>

値は、渡された json を介して明らかに入力されます。

また、基本的に jquery 検証ルールを自動的に生成する xval 検証フレームワークを使用していることにも言及する必要があります。 aspnet-mvc/

4

4 に答える 4

2

さて、2つ試してみてください。要素を動的に追加するものは何ですか?.Rules( "add"、)を同じコードに配置することはできませんか?

于 2009-03-23T04:10:09.227 に答える
2

これが失礼なハックかどうかはわかりませんが、私にとってはうまくいきました。この前に、セレクターで each() を実行していて、新しく作成された Ajax 要素で発生しているのと同じ問題に遭遇しました。

ライブでのマウスオーバーイベントは、あなたがCSSに夢中になっていないことを認めれば、うまくいったようです:

// >>> MSG/Comment form validator, now and forever...  
    $('form.streamForms').live('mouseover', function(){
        $(this).validate({
            rules: {
                text: "required"

            },
            messages: {
                text: " "
            }
        });    
    });

それが役に立てば幸い!

于 2010-09-15T20:18:11.407 に答える
0

jQuery 1.3 の新しいLive Eventsを調べるとよいでしょう。

于 2009-03-23T03:38:32.407 に答える
0

これが私がこれをどのように処理したかです。まず、検証オブジェクトを作成しました。

    var myvalidations = {};
    myvalidation.registerform = function() { $("#registerform").validate({
            submitHandler: 関数 (フォーム) {
                $(form).ajaxSubmit(optionspersonal);
                //submitReg();
            }、
                    ルール: {
                ファーストネーム: {
                     必須: 真、
                     最小長: 5、
                     最大長: 22
                }、
                    メッセージ: {
                             ファーストネーム: {
                                 必須: "あなたの呼び方を教えてください。",
                     minlength: "ユーザー名は 5 文字以上である必要があります"
                             }
                     }
             });
        }

ここで、フォームを作成するときはいつでも、フォームに ID があることを確認するか、それを参照するために何らかの形で作成し、作成した直後に関数を呼び出すだけです。

    //コンテンツを作成する
    $('.content').html('--フィールドなど--');
    //検証を追加
    myvalidation.registerform();

さらなる提案を歓迎します。しかし、基本的にこれは正しいアプローチだと思います。

于 2011-09-30T17:43:58.890 に答える