4

CRUD操作に使用されるjQueryダイアログの作成を一般的に処理するプラグインがあります。ダイアログに追加されたフォームのマークアップは、プラグイン コードの外部で使用できます。プラグインは、マークアップを提供するように http サービスに要求し、受け取ったときにそれをダイアログ自体に追加するだけです。

onSetupValidation次に、プラグイン ユーザーが各フォームの検証をカスタマイズするためのハンドルとなるプラグイン (関数) にコールバックを作成しました。これは私が使用しているコードの例です

var element = $('#mydiv');
element.crudplugin({
    [...]
    onSetupValidation: function(markup) {
        var form = $('#myForm', markup);
        var container = $('<div class="error"><p>Errors were found validating your form. Please correct them and retry.</p><ol></ol></div>')
                       .appendTo(form).hide();
        var validator = form.validate({
            errorContainer: container,
            errorLabelContainer: $('ol', container),
            errorElement: 'em',
            wrapper: 'li',
            highlight: function (element) {
                $(element).addClass("ui-state-error");
            },
            unhighlight: function (element) {
                $(element).removeClass("ui-state-error");
            },
            submitHandler: function (form) {
                [...]
            }
        });
    }
    [...]
});

良い。問題に行きましょう

  1. マークアップ内に (クラス属性として) 検証規則を追加すると、検証がまったく機能しません。validate()メソッドにルールを追加しても同じ動作
  2. グーグルで検索すると、特に SO で、次のサンプルのように検証プラグイン.rules('add', rule)のメソッドを使用する多くのサンプルが見つかりました。これらのリンクはすべて、次のサンプルのようにルールを追加する前にメソッドを呼び出すことをお勧めしますvalidate

    $("#myField", markup).rules("add", { required: true });
    

しかし、命令が実行されるときにこのメソッドを使用すると、次のエラーが発生します。

SCRIPT5007: プロパティ 'settings' の値を取得できません: オブジェクトが null または未定義の jquery.validate.min.js、15 行目の文字 257

何かアドバイス?

4

2 に答える 2

4

あなたは間違いなく正しい軌道に乗っています。

重要なのはvalidate、フォーム内の個々のフィールドにルールを追加する前に、フォームを呼び出す必要があるということです。

このケースがトリガーされる例を見たい場合は、前の質問(または具体的にはjsfiddle ) に対する私の回答を確認してください。その jsfiddle で、javascript ( $('#myForm').validate({/* ... */});) の最後の 4 行をコメント アウトすると、表示されているのと同じエラー メッセージが表示されます。

あなたの質問からも明らかではありませんがvalidate、フォームが表示される前に電話をかけている可能性はありますか? もしそうなら、それは役に立たない可能性があります...

于 2012-07-05T20:14:13.717 に答える