2016-10-24 6 views
0

jquery検証を使用して検証されたMVCアプリケーションにAjaxフォームがあります。当初、日付フィールドは米国の代わりに英国のフォーマット(私は英国のように設計されていた)のため、検証を行っていなかったので、それを止めるコードをいくつか追加しました。jquery検証をMVC Ajaxフォームに正しく組み込むにはどうすればよいですか?

jqueryの検証は、私が追加されたコードは、しかし、それは成功または失敗機能ですトリガされませんAjaxフォームを意味form.submitをハイジャック

$(function() { 
    $.validator.addMethod("date", function(value, element) { 
     var dateReg = /^\d{2}([./-])\d{2}\1\d{4}$/; 
     return value.match(dateReg); 
    }, "Invalid date"); 

    $('#form').validate({ 
     submitHandler: function(form) { 
      form.submit(); 
     } 
    }); 
}); 

日付。

Ajaxのフォームのコード

@using (Ajax.BeginForm("Create", "Fixtures", new AjaxOptions 
{ 
    OnSuccess = "Success", 
    OnFailure = "Failure"  
}, new { @class = "standard-form", @Id = "form" })) 
{ 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
    ...Form fields etc... 
} 

スクリプト

function Success() { 
    console.log("Success") 
} 
function Failure() { 
    console.log("Failure") 
} 

これは全体の方法は、私にはきれいな感じdoens'tないので、私の質問は、私が検証しない方法ですフォームは正しく(jqueryのバリデーションや代替を使用して)私のajaxフォームの成功と失敗の機能を保持しますか?

+0

'DataAnnotations'を使用してモデルまたはビューモデルを検証し、それをjQueryの妥協しない検証と組み合わせる方法はありますか? – Esen

+0

あなたの正規表現は日付を検証していません。 'dd/MM/yyyy'フォーマットを許可したいのであれば、[jquery globalize](https://github.com/jquery/globalize)を使用するか、またはjquery datepickerを使用している場合は、メソッド(jQuery-ui datepickerの場合は[この回答](http://stackoverflow.com/questions/27285458/jquery-ui-datepicker-and-mvc-view-model-type-datetime/27286969#27286969を参照してください)。 –

+0

また、[この回答](http://stackoverflow.com/questions/30594128/error-in-date-validation-mvc/30609111#30609111)のスクリプトを使用することもできます –

答えて

0

ありがとうございます。最後に、いくつかのドキュメンテーションを少し掘り下げたところで、私はあなたがdateITAをtrueに設定できることを発見しました。ここにこれのコードがあります。

$("#form").validate({ 
     rules: { 
      dateITA: true 
     } 
    }) 

このアプローチは、アプリケーションにとって非常に効果的です。すべてのAjaxフォームオプションを問題なく保持できます。私は私の意見の中にただ一つの形しか持っていないので、矛盾するIDの使用について心配する必要はありませんでした。

関連する問題