我使用这里找到的解决方案,使用qTip jQuery插件在工具提示中显示客户端验证错误。这个解决方案对于客户端验证非常有效,但我希望能够以同样的方式显示服务器端验证错误。有人知道如何使用qTip在工具提示中显示服务器端验证错误吗?
谢谢
如果存在服务器端验证错误,当页面加载时,将会有一个span元素,其类为'field-validation-error',因此我们可以简单地循环遍历具有该类的所有元素,提取内容或错误消息,并将其显示在工具提示中。
$(document).ready(function () {
// Run this function for all validation error messages
$('.field-validation-error').each(function () {
// Get the name of the element the error message is intended for
// Note: ASP.NET MVC replaces the '[', ']', and '.' characters with an
// underscore but the data-valmsg-for value will have the original characters
var inputElem = '#' + $(this).attr('data-valmsg-for').replace('.', '_').replace('[', '_').replace(']', '_');
var corners = ['left center', 'right center'];
var flipIt = $(inputElem).parents('span.right').length > 0;
// Hide the default validation error
$(this).addClass('Hidden');
// Show the validation error using qTip
$(inputElem).filter(':not(.valid)').qtip({
content: { text: $(this).text() } , // Set the content to be the error message
position: {
my: corners[flipIt ? 0 : 1],
at: corners[flipIt ? 1 : 0],
viewport: $(window)
},
show: { ready: true },
hide: false,
style: { classes: 'ui-tooltip-red' }
});
});
});
这里有一篇博客文章详细解释了如何做到这一点
Nick Olsen发布的解决方案非常棒!一个观察:
此语句中使用的.replace()仅替换第一次出现的‘.’
、‘['
和']‘
var inputElem = ‘#’ + $(this).attr(‘data-valmsg-for’).replace(‘.’, ‘_’).replace(‘[', '_').replace(']‘, ‘_’);
要替换所有出现的行应该像这样:
var inputElem = "#" + $(this).attr("data-valmsg-for").replace(/./g,"_").replace(/[[]]/g, "_");