javascript - asp.net 中的 jQuery 表单验证:在 depriated 输入时报告警告消息,同时在错误输入时保持错误
问题描述
在我们的(旧)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 消息。
有人知道更好的解决方案吗?
解决方案
推荐阅读
- haskell - 用 let fun x = x + 1 形式定义 Haskell 函数
- java - 来自 Android Visualizer 的 FFT 数据取决于音量
- angular - Visual Studio Code compileOnSave 停止工作
- python - 从文本文件中读取,如果列表中有句子定义
- powershell - 使用 PowerShell 删除文件名中的所有字符(包括一个字符)
- java - Spring boot:无法加载缓存项:javax/servlet/Filter
- java - 在 ScrollView/LinearLayout 中单击 TextView?
- c# - 错误模块名称:UWP 应用程序中的 Windows.UI.Xaml.dll
- python - 需要一种方法来获取三个 csv 文件并将其放入一个文件中,并在 Python 中删除重复项和替换值
- excel - 从加载项打开 Excel Online 工作簿