0

私はフォームを検証するためにJquery検証プラグインを使用しています。検証ですべて問題ありません。私の問題はsubmitHandler関数にありますが、何らかの理由でフォームをメールに送信していません。phpをチェックしたところ、完全に大丈夫。これは、より完全なhttp://jsfiddle.net/KszmV/を行っていることのファイルです

私がしなければならない他のことと、その方法がわかりません。ページを再度ロードせずにフォームを送信し、フォームの最後にメッセージを表示する方法です

これは私のスクリプトです

<script type="text/javascript">
    $(document).ready(function(){

        $("#contactusform1").validate({
            rules: {
                "name": {
                    required: true,
                    minlength: 3
                },
                "phone":{
                    required:true,
                    digits:true
                },
               "email":{
                    required: true
                }

            },
            messages: {
                "name": {
                    required: "Please enter a name"
                },
                "phone":{
                    required: "Please provide a contact number"
                },
                "email":{
                    required: "Enter a valid email"
                }
            },
            errorPlacement: function(error, element) {
                error.insertAfter(element);
            },

            submitHandler: function (form) {    

                $.ajax({ 
                    type: 'POST', 
                    data: $('form').serialize(),
                    url: 'process-contact1.php', 
                    success: function () {

                    }                        

                });

                form.submit();
            }           

        });

    });
</script>
4

1 に答える 1

1

いくつかの問題があります

submitHandler: function (form) {    
    $.ajax({ 
        type: 'POST', 
        data: $(form).serialize(), // $(form) is ok here
        url: 'process-contact1.php', 
        success: function () {
        }                        
    });
    form.submit();  //<-- REMOVE this
    return false; //<-- ADD this
}

デモ: http://jsfiddle.net/Y8cHm/

  • form.submit()プラグインがすでにこれを処理しているため、削除してください。

  • そうしないと、通常の送信/ページの更新が行わreturn falsesubmitHandlerます。ajax

  • jsFiddle</form>タグがありませんでした。

  • あなたの jsFiddleは、CDNではなく、プラグインのgitHub ページにリンクしていました。

  • $(form).serialize()上記の動作デモで示されているように、完全に受け入れられます。引用符を使用すると、ページ上の$('form')任意のものを単純にターゲットにでき<form>ます。一方、関数$(form)に既に渡されているのと同じフォーム要素をターゲットにしています.validate()あなたのデモでは、両方とも同じ結果になりますが、他のすべての状況には当てはまらない場合があります。

于 2013-03-29T23:05:06.380 に答える