0

在我们的(旧)ASP.NET MVC 5 应用程序中,我们在用户 GUI 中有许多表单。

用户可以链接他们在文本框中输入的图像和网站。ASP.NET MVC 使用 jQuery 表单验证器来验证输入并将错误输入作为错误消息报告给用户,从而使表单无效,因此不会被 post 接受。

我们不想强迫我们的用户(目前)使用安全链接,即 URI 中的“https”,但我们确实想警告他们。但是,jQuery 表单验证器似乎没有这个选项。它是“有效”或“错误”。

为了说明我的情况,我有一些截图:

这是当前有效的输入:没有错误或警告:

在此处输入图像描述

这是当前无效的错误输入(请原谅我的荷兰语):

在此处输入图像描述

这是我想查看用户是否输入“http:”的警告:

在此处输入图像描述

请注意,警告没有错误,因此仍然可以像这样提交表单。

目前,我们使用将 URL 文本框验证添加到输入字段

<input ... data-val-regex="Vul een geldige button url in" data-val-regex-pattern="(^$)|(^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-zA-Z\u00a1-\uffff0-9]-*)*[a-zA-Z\u00a1-\uffff0-9]+)(?:\.(?:[a-zA-Z\u00a1-\uffff0-9]-*)*[a-zA-Z\u00a1-\uffff0-9]+)*(?:\.(?:[a-zA-Z\u00a1-\uffff]{2,}))\.?)(?::\d{2,5})?(?:[/?#]\S*)?$)" ...>

有没有办法使用 jquery 表单验证器来实现这一点?

我尝试编写自己的 jQuery 解决方案

$("[data-val-regex-pattern*='https?']")
.keyup(function() {
    if ($(this).val().startsWith("http:")) {
        $(this).parents(".form-group")
               .addClass("has-warning");
        $(this).siblings("span")
               .addClass("field-validation-warning")
               .html('Warning: "http:" is deprecated, use "https".');
    } else {
        $(this).parents(".form-group")
               .removeClass("has-warning");
        $(this).siblings("span")
               .removeClass("field-validation-warning")
               .html("");
    }
});

这不能正常工作,因为 jquery 表单验证器不断覆盖 html 消息。

有人知道更好的解决方案吗?

4

0 回答 0