当输入有效时,qTip2验证不会消失

时间:2013-02-25 03:27:22

标签: javascript jquery asp.net-mvc-4 qtip2

我试图以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不会消失。以下是确切的步骤:

  1. [<span for=​"Amount" class>​</span>​] 字段
  2. 输入无效值
  3. 当输入焦点丢失时,qTip会显示正确的错误消息
  4. 使用有效值
  5. 更新输入
  6. qTip没有关闭
  7. 从Chrome开发者工具中,我将问题确定为这一行代码:span。即使提供了有效的输入,此条件也会返回true。

    {{1}}变量:

    {{1}}

    我想知道为什么即使{{1}}为空,上述条件也会返回true?我希望qTip在输入有效时自动关闭。

2 个答案:

答案 0 :(得分:0)

不引人注目的代码看起来是正确的。我之前使用过QTip,并且工作正常。

听起来还有一个尚未满足的验证规则。值得检查浏览器开发工具中的代码,以查看该字段的验证属性。

我还会检查您的开发工具控制台,检查是否存在客户端错误。

答案 1 :(得分:0)

原来是qTip2 bug。我更新了我的版本,一切正常。