【问题标题】:How to display jqueryui validation error message in jqueryui tooltip如何在 jqueryui 工具提示中显示 jqueryui 验证错误消息
【发布时间】:2014-01-08 04:33:19
【问题描述】:

我正在关注this tutorial 在 jqueryui 工具提示中显示验证错误。验证工作正常,但我无法显示正确的错误消息,因为正确的属性不能有条件地链接到工具提示,如下面的示例所示:

$(document).tooltip({
        items: ".input-validation-error",
        content: function () {

            //debugger;
            return $(this).attr('data-val-required');
        }
    });

此逻辑只会显示必填字段错误消息,有没有办法通过利用验证结果(用于远程和比较类型验证)来扩展此逻辑,还是我遇到了死胡同?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4


    【解决方案1】:

    由于 content() 函数是按需调用的,因此您可以根据相关元素 this 的属性提供所需的任何文本。

    您需要检查元素并返回发生的验证错误的文本。比如:

    $(document).tooltip({
        items: ".input-validation-error",
        content: function () {
    
            //debugger;
            return $(this).attr('data-val-required') || 
                   $(this).attr('data-val-date') ||
                   $(this).attr('data-val-number'); // etc etc
        }
    });
    

    这将返回填充了错误消息的数据验证属性。

    【讨论】:

    • 我仍然无法让它正常工作,根据您的建议修改返回如下:return $(this).attr('data-val-remote') || $(this).attr('data-val-required') || $(this).attr('data-val-equalto');短信似乎默认为第一个选项。
    • 好吧,我只是在浏览器中输入,无法运行您的代码。尽管存在任何语法问题,但概念很重要。您可以检查元素并返回要显示的错误文本。
    【解决方案2】:

    使用原始问题中引用的tutorial,将第 4 行从:

    @{ Html.ValidateFor(m => m.UserName); }
    

    到:

    @Html.ValidationMessageFor(m => m.Username, null, new {style="visibility:hidden"})
    

    然后,修改内容函数如下:

    $(document).tooltip({
        items: ".input-validation-error",
        content: function () {
            return $("[data-valmsg-for='" + $(this).attr('id') + "']").text();
        }
    });
    

    本质上,我们不希望原始 ValidationMessageFor 跨度显示(可见性=隐藏)。我们只是将它用作工具提示的容器。

    【讨论】:

    • 我使用了 style="display:none" 而不是 visibility 属性,因为隐藏元素在表单中占据了空间,即使它的可见性是隐藏的,而 display none 它不占用空间
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多