2012-01-18 10 views
0

ボタンをクリックすると、同じページ(LIthboxではなく)内の他のフォームが有効な場合、フォームを召喚したいと思います。その検証は私が作成したカスタム検証であり、正常に動作しています。 これは、問題が提出するアクションがfalseを返すカスタム検証の応答を待たずに実行していることであるビューカスタム検証がAjax MVCコールで動作しない

$("#btnSave").click(function (e) { 

      if ($("#GeneralButtonFrm").valid()) { 

       $("#ButtonFrm").submit(); 

      } else { 
       //Error Message 
      } }); 

内のコードです。

これはなぜ起こっているのですか?

注:私は、ソリューションがjQuery.validator.unobtrusive.parse( '#form')であると仮定して、部分的にレンダリングするligthboxを使用していないと言いました。

ありがとうございました

+0

を実行します。 ajaxを使用するカスタムバリデータですか? ajaxを使用するバリデーターは少し厄介ですが、有効でないというfalseを返す必要があります。サーバーからの応答を受け取ると、値が有効であればフラグを設定し、フォームを再検証し、フラグに応じてtrueまたはfalseを返します。私は私が明確だったことを願っています:D – Anders

+0

素早い答えをありがとう。 「有効でないときにfalseを返す」とはどういう意味ですか?どのようにサーバーから答えを得ることができますか? –

+0

すべてを真っ直ぐにするには、ajaxを使って検証しようとするカスタムルールがありますか? – Anders

答えて

0

あなたはまだあなたの質問に非常に曖昧です。しかし、私はあなたが望むものは、ajaxを呼び出してサーバサイド検証を行うことだと思います。その場合、問題は、Ajaxリクエストが非同期であるため、あなたの検証がAJAXリクエストの前に返すこと..ですGeneralButtonFrmはあなたがjQuery.validator.unobtrusive.parseを使用しなければならないAJAXを使用してレンダリングされた、またはそれがある場合は、この

<html> 
    <head> 
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
     <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script> 
     <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.js"></script> 
     <script type="text/javascript"> 
      jQuery.validator.addMethod("ajaxCustom", function (value, element) { 
       var wrap = $(element); 
       var url = wrap.data("customAjaxUrl"); 
       var result; 

       $.ajax({ 
        type: 'GET', 
        url: url, 
        dataType: 'json', 
        success: function (data) { 
         result = data.valid; 
        }, 
        data: { value: value, id: element.id }, 
        async: false 
       }); 

       return this.optional(element) || result; 

      }, "Ajax"); 

      $.validator.unobtrusive.adapters.addBool('ajaxCustom'); 
      </script> 
     <style type="text/css"> 
      .input-validation-error { 
       background: red; 
      } 

     </style> 

    </head> 
    <body> 

     <form action="/"> 
      <input data-val-ajaxCustom="Tuckel" data-val="true" data-val-required="Its required" data-custom-ajax-url="validate.html" /> 
      <button type="submit">Submit</button> 
     </form> 
    </body> 
</html> 
関連する問題