这就是我在一些网站上使用 qTip2 的方式。正常工作非常麻烦,需要 qTip 开发人员的大量帮助。我将 qTip.destroy
方法放在success
回调函数中,而不是errorPlacement
像您所做的那样链接在其中。
$(document).ready(function () {
$('#myform').validate({
rules: {
//
},
success: function (error) {
setTimeout(function () { // Use a mini timeout to make sure the tooltip is rendred before hiding it
$('#myform').find('.valid').qtip('destroy');
}, 1);
},
submitHandler: function (form) {
// my ajax
return false;
},
errorPlacement: function (error, element) {
var cornersAt = ['left center', 'top left'], // Set positioning based on the elements position in the form
cornersMy = ['right bottom', 'bottom right'],
flipIt = $(element).parents('div.left').length > 0,
position = {
at: cornersAt[flipIt ? 0 : 1],
my: cornersMy[flipIt ? 0 : 1]
},
offset = flipIt ? 6 : 35;
$(element).filter(':not(.valid)').qtip({ // Apply the tooltip only if it isn't valid
overwrite: false,
content: error,
position: position,
show: {
event: false,
ready: true
},
hide: false,
style: { // Make it red... the classic error colour!
classes: 'ui-tooltip-error ui-tooltip-rounded',
tip: {
corner: true,
offset: offset
}
}
}).qtip('option', 'content.text', error);
} // closes errorPlacement
}); // closes validate()
});
对于一个替代的 jQuery Tooltip 插件,我最近切换到 Tooltipster,它与 jQuery Validate 集成要干净得多。
请参阅此答案以获取演示: https ://stackoverflow.com/a/14741689/594235