-3

私はいくつかの単純な HTML コントロールを含むフォームを持っています。

$('#myForm').ajaxForm({

          beforeSubmit : function() { 

          var lookup          = true;

          var validate        = false;
          $.ajax({

             async: false,

             url: 'user.php?username='+$('#username').val(),

             success: function(data) { }

         })
 validate =  $("#myForm").validate({rules: { price: { number: true, }, size: { number: true, }} , errorClass: 'form_fields_error',  errorPlacement: function(error, element) {}}).form() ;
if(lookup && validate ){

                return true;

            }

            else{

                return true;

            }

          },
       target: '#showdata',

          success: function() { }

        });

      });

    $("#myForm").submit(function()
  {

 alert('this is not fired');
//e.preventDefault();
var formData = $(this).serialize();

$.ajax(
{
    type:'post',
    url:'administration/save_users.php',
    data:formData,
    beforeSend:function()
    {
       // launchpreloader();
    },
    complete:function()
    {
       // stopPreloader();
    },
    success:function(result)
    {
         alert(result);
    }

});

});

フォーム送信が起動されません...何が欠けていますか? 私はフォーム action="#" を持っています....

4

1 に答える 1

1

コードに基づいて、おそらくjQuery Validate pluginを使用しています。

validate =  $("#myForm").validate({rules: { price: { number: true, }, size: { number: true, }} , errorClass: 'form_fields_error',  errorPlacement: function(error, element) {}}).form() ;

あなたのコードは、複数のajax呼び出しと余分なsubmitハンドラーですべて混乱しています。フォーマットが不十分であるという事実は、私たちが解明してトラブルシューティングするのに役立ちません.

jQuery Validate のドキュメントに従って

submitHandler、コールバック、デフォルト: デフォルト (ネイティブ) フォーム送信

フォームが有効な場合に実際の送信を処理するためのコールバック。唯一の引数としてフォームを取得します。デフォルトの送信を置き換えます。検証後に Ajax 経由でフォームを送信するのに適した場所。

これは、プラグインajaxのコールバック関数内に配置する必要があることを意味します。submitHandler

君は...

  • ハンドラーを使用する必要はありませんsubmit(これはプラグインに組み込まれています)

  • 送信/クリックの前/最中にフォームの有効性をテストする必要はありません (これもプラグインに組み込まれています)

代わりにこれを試してください...

デモを参照してください: http://jsfiddle.net/zuXYR/

$(document).ready(function () {

    $('#myForm').validate({ // initialize the plugin
        rules: { 
            price: { 
                number: true 
            }, 
            size: { 
                number: true
            }
        }, 
        errorClass: 'form_fields_error',  
        errorPlacement: function(error, element) {
            // return false;  // this will suppress errors
            error.insertAfter(element); // the default function
        },
        submitHandler: function (form) {
            // your ajax code here
            return false; // required when using ajax to prevent a page reload
        }
    });

});

errorPlacementまた、コールバック関数を空にしたい理由がわかりません。エラー メッセージを非表示にする場合は、 を使用しますreturn false。それ以外の場合、デフォルトの動作を使用する場合は、errorPlacementコールバックを完全に除外します。

于 2013-03-28T23:36:00.883 に答える