私はMVC3でproyectに取り組んでいます。浮動小数点のヒントとしてエラーを表示するために、qTip2とjQueryの検証を統合しようとしています。私が抱えている問題は、明らかにフォーム検証でerrorPlacementを呼び出すことは何もしていないことです。MVCがそれを処理する方法と関係があると思います。qTipとMVC3の統合とjQueryの検証(errorPlacement)
基本的には、MVC3とjQuery(注釈)の統合検証を使用するだけですが、qTipと統合してエラーmsgの表示方法を変更することもできます。
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;
});
上記の解決策は私が言及した問題を解決しました。ありがとう! –
サーバーへの投稿後に戻って来るサーバー側の検証メッセージのヒントを表示する方法に関するアイデアはありますか? –
@ Nick-Olsen - qTipの統合はjQueryのクライアント側の検証と連動します...サーバー側の検証のために実装するには、ケースバイケースでプログラムを作成する必要があります。しかし、より良い方法があるかどうかはわかりません。私はこれがそれ自身の問題かもしれないと思う。あなたがコミュニティ全体の助けを得ることができるようにそれを投稿してください... – AJC