我试图以onError
的形式显示ASP.net MVC客户端验证错误消息,方法是更改jquery.validation.unobstrusive.js
中的function onError(error, inputElement) { // 'this' is the form element
var container = $(this).find("[data-valmsg-for='" + inputElement[0].name + "']"),
replace = $.parseJSON(container.attr("data-valmsg-replace")) !== false;
// Remove the following line so the default validation messages are not displayed
// container.removeClass("field-validation-valid").addClass("field-validation-error");
error.data("unobtrusiveContainer", container);
if (replace) {
container.empty();
error.removeClass("input-validation-error").appendTo(container);
}
else {
error.hide();
}
/**** Added code to display the error message in a qTip tooltip ****/
// Set positioning based on the elements position in the form
var elem = $(inputElement),
corners = ['left center', 'right center'],
flipIt = elem.parents('span.right').length > 0;
// Check we have a valid error message
if (!error.is(':empty')) {
// 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: 'qtip-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'); }
}
函数,类似于完成public class Model
{
[DataType(DataType.Currency)]
[Range(typeof(decimal), "0", "79228162514264337593543950335")]
public decimal Amount { get; set; }
// bunch of other properties
}
Amount
3}}
if (!error.is(':empty')
我的模特:
error
一切正常,错误(例如需要数量字段)显示在qTips中。但是,当我将输入更改为有效值时,qTip不会消失。以下是确切的步骤:
[<span for="Amount" class></span>]
字段从Chrome开发者工具中,我将问题确定为这一行代码:span
。即使提供了有效的输入,此条件也会返回true。
{{1}}变量:
{{1}}
我想知道为什么即使{{1}}为空,上述条件也会返回true?我希望qTip在输入有效时自动关闭。
答案 0 :(得分:0)
不引人注目的代码看起来是正确的。我之前使用过QTip,并且工作正常。
听起来还有一个尚未满足的验证规则。值得检查浏览器开发工具中的代码,以查看该字段的验证属性。
我还会检查您的开发工具控制台,检查是否存在客户端错误。
答案 1 :(得分:0)
原来是qTip2 bug。我更新了我的版本,一切正常。