私は MVC3 を使用したプロジェクトに取り組んでおり、エラーをフローティング ヒントとして表示するために qTip2 を jQuery 検証と統合しようとしています。私が抱えている問題は、明らかにフォーム検証で errorPlacement を呼び出しても何もしていないことです.MVCがそれを処理する方法と関係があると思います.
基本的に、私がやりたいことは、MVC3 と jQuery (注釈) の間の統合された検証を使用することですが、qTip と統合して、エラー メッセージの表示方法を変更することです。
私はあちこち検索しましたが、jquery.validate.unobtrusive.js - onError 関数を変更することを提案する人が見つかりましたが、それをチェックして、適切に変更する方法がわかりませんでした。既存のスクリプトを変更する必要があります。
ご協力ありがとうございました。
私がこれまでに持っているもの:
私のモデル:
public class User
{
[Required]
public string Id { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
public string FirstName { get; set; }
public string SecondName { get; set; }
public string LastName { get; set; }
}
私の見解での私のJavaScript:
$('#Form').validate({
errorClass: "errormessage",
errorClass: 'error',
validClass: 'valid',
errorPlacement: function (error, element) {
// Set positioning based on the elements position in the form
var elem = $(element),
corners = ['left center', 'right center'],
flipIt = elem.parents('span.right').length > 0;
// Check we have a valid error message
if (true) {
// Apply the tooltip only if it isn't valid
elem.filter(':not(.valid)').qtip({
overwrite: false,
content: error,
position: {
my: corners[flipIt ? 0 : 1],
at: corners[flipIt ? 1 : 0],
viewport: $(window)
},
show: {
event: false,
ready: true
},
hide: false,
style: {
classes: 'ui-tooltip-red' // Make it red... the classic error colour!
}
})
// If we have a tooltip on this element already, just update its content
.qtip('option', 'content.text', error);
}
// If the error is empty, remove the qTip
else { elem.qtip('destroy'); }
},
success: $.noop // Odd workaround for errorPlacement not firing!
})
$('#Form').submit(function () {
if (!$(this).valid())
return false;
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
beforeSend: function () {
},
success: function (result) {
},
error: function (result) {
}
});
return false;
});