在我们的(旧)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 消息。
有人知道更好的解决方案吗?