0

私はベースシスタンス検証プラグインを使用しており、2 番目の送信ボタン (プレビューと呼ばれます) をキャッチし、ajax 経由で fancybox にデータを送信する小さなスクリプトを持っています。ファンシーボックスに送信する前にフォームを検証したいと思います。現時点では、送信ボタンを介してフォームを送信した場合、それらは検証のみです。さまざまな方法で試しました (たとえば、検証の呼び出しを if の直後に置くなど) が、うまくいきませんでした。プレビューボタンが押されたときに、検証も反応する必要があることを知らせる方法があるかもしれませんか?

私のコード:

        $(function() {
            $('#myform *').tooltip();
            $('#myform ').validate();
            });

        $(document).ready(function(){
          $(':submit').click(function(){
              for (var i in CKEDITOR.instances){
                CKEDITOR.instances[i].updateElement();
                }
            var value = $(this).attr("id");
            if (value == 'preview') {
                $.fancybox.showLoading();
                $.ajax({
                    type    : "POST",
                    cache   : false,
                    url     : "../mypath/",
                    data    : $('#myform').serializeArray(),
                    success : function(data) {
                      $.fancybox(data, {
                        'minWidth': '100%',
                        'minHeight': '100%',
                            });
                      }
                    });
                    return false;
            }
        });
    });
4

1 に答える 1

3

私が間違っていなければ、Bassistance Validator プラグインは、フォームを送信し、要件が満たされていない場合、関数がその送信に対して「false」を返し、発生したエラーを視覚的に確認できるという事実に依存しています。

あなたのソース コードでは、コードの最初の部分で Bassistance バリデータ プラグインを正しく初期化しました (たとえば、 minlength="2" required などの入力フィールドで直接ルールを作成したと仮定します) が、問題があります。送信ボタンの SUBMIT イベントのフックはなく、そのボタンの CLICK イベントのフックのみです。

Bassistance の Web サイトには、プラグインのカスタム送信イベントを使用する方法を示す簡単な例があります。

http://jquery.bassistance.de/validate/demo/ajaxSubmit-intergration-demo.html

基本的に、コードのインテリジェントな部分を

jQuery("#yourform").validate({
    submitHandler: function(form) {
        jQuery(form).ajaxSubmit({
            /*
                Here you can do the following:
                1) Update the instances of CKEDITOR
                2) Check if the submit is in the preview mode
                3) If yes
                    - do your fancy stuff
                    - return false so that the real submit is not triggered
                   If not
                    - return true so that the real submit handler is evaluated by the browser and the POST is triggered
            */

        });
    }
});
于 2012-12-20T10:34:50.520 に答える