MVC 3のデフォルトの検証は、 jQuery Validation に基づいています。これは通常、次のようにカスタマイズできます。
$.validator.setDefaults({
submitHandler: function() { alert('submitHandler'); },
errorPlacement: function(error, element) {
// do something important here
alert('errorPlacement');
},
errorClass: "error",
errorElement: "input",
onkeyup: false,
onclick: false
})
しかし、それはMVC 3では機能しないようです。具体的には、errorPlacementが呼び出されたことがないようで、理由がわかりません。 submitHandlerが呼び出されますが、errorPlacementは呼び出されません。
サイトのスタイルに必要な構造/スタイルに一致するように検証をカスタマイズするにはどうすればよいですか?デフォルトは素晴らしいですが、すべての状況で常に機能するとは限りません。
私のコードでは、_$.validator.setDefaults
_を使用する代わりに、$("#form_selector").data('validator')
を使用してフォームバリデーターにアクセスし、設定を変更します。
_$(function () {
var validator = $("#form_selector").data('validator');
validator.settings.errorPlacement = function(error,element) {
alert('errorPlacement');
};
});
_
それがあなたのために働くかどうか見てください。
私は同じ問題を抱えていましたが、Unobtrusiveプラグインが実際にcasuingの問題であり、設定したオプションを上書きすることに気付きました!秘訣は、コードを次の順序で記述/含めることです。
他の順序でこれは正しく設定されません!
これを行う正しい方法:
スクリプトの順序:
カスタムコードとオプションスクリプト:
var settings = {
//...
};
// override jQuery unobtrusive validator settings
$.validator.unobtrusive.options = settings;