问题标签 [unobtrusive-validation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6916 浏览

asp.net-mvc-3 - 如何在客户端将自定义 ValidationAttribute 呈现为“da​​ta-val-xx”属性?

给定一个看起来像这样的 ViewModel:

像这样的视图(此处为 Razor 语法):

我得到以下标记:

但是,我希望它还为我的自定义验证器包含一个“数据-”属性。

我想要这样的东西:

如何使用 ASP.NET MVC 3.0 实现这一点?

例如,我是否需要在我的自定义验证器上添加一些特殊属性?还是在某个地方注册?

0 投票
4 回答
2875 浏览

asp.net-mvc - MVC 3 无法关闭不显眼的 javascript

我一直在我的 mvc 3 项目(使用 RC1)中实现新的不显眼的 javascript。我已将 3 个必需的脚本添加到“主”布局页面。一切运作良好。

但是,我有一个视图,我想使用一些普通的 jquery 验证来验证文本框。确切地说,我想检查一个条目是否存在,并且它是数字的。

所以在页面上我的js看起来像这样......

但是,这不起作用。因此,在我的主布局页面上,我注释掉了对 jquery.validate.unobtrusive.min.js 文件的引用,嘿,它很快就起作用了。

所以我想,一定是与不引人注目的点点滴滴有关,所以如果我把它关掉(我读到你可以)一切都会好起来的。

因此,在视图页面中,我添加了以下行

但没有喜悦。我可以让它工作的唯一方法是删除对不显眼的 js 文件的引用。

当然不可能是这种情况。我一定是停止了对吧?

感谢:D

0 投票
13 回答
78806 浏览

asp.net-mvc-3 - jquery.validate.unobtrusive 不使用动态注入的元素

我正在使用ASP.Net MVC3,使用客户端验证的更简单方法是启用jquery.validate.unobtrusive. 一切正常,对于来自服务器的东西。

但是当我尝试使用 javascript 注入一些新的“输入”时,我知道我需要调用$.validator.unobtrusive.parse()以重新绑定验证。但是,所有这些动态注入的字段都不起作用。

更糟糕的是,我尝试手动绑定使用jquery.validate,但它也不起作用。有什么想法吗?

0 投票
1 回答
2079 浏览

unobtrusive-javascript - 如何在自定义表单发布事件之前运行 ASP.NET MVC3 客户端表单验证

我有一个表单视图,它使用 asp.net mvc 3 中的不显眼的客户端验证来验证表单字段。

我还有一个自定义 jquery 脚本来通过 ajax 提交表单

我的问题是如何更改事件处理程序的顺序,以便在我的 ajax 表单发布处理程序之前调用 asp.net mvc 3 客户端验证,以便 asp.net mvc 处理程序可以防止我的处理程序被调用(如果有)任何验证错误。

我遇到的问题是在我的事件处理程序之前没有触发 asp.net mvc 3 unobtrusive javascript 验证事件处理程序。

通过在我的脚本末尾禁用阻止进一步事件传播的代码,我可以看到在我的处理程序执行后确实触发了 asp.net mvc 3 客户端验证。

0 投票
2 回答
5823 浏览

asp.net-mvc - ASP.NET MVC3 自定义不显眼的客户端验证不阻止 Ajax 表单发布

我有一个“更改密码”页面,需要在发送之前通过 Javascript 对页面上输入的任何密码进行哈希处理。更复杂的是,页面是通过 jQuery load() 调用加载的,并由 jQuery.Form ajaxForm() 调用提交。一切都在 MVC2 中工作,但 MVC3 给我带来了麻烦。

也就是说,我有一个带有“更改密码”链接的页面,单击该链接时,会将更改密码页面加载到 jQuery 模式弹出窗口中,然后通过 jQuery.Form 库提交更改密码页面上的表单(基本上只是包装了一个$.ajax 调用),并将其结果返回到模态相同的模态弹出窗口中。

本质上,我有一个具有两个属性的模型,OldPassword 和 NewPassword。我有两个由视图生成的隐藏字段。它们保存另外两个字段 PrehashOldPassword 和 PrehashNewPassword 的散列值,并通过 keyup 事件进行更新(我知道,这意味着它对每个 keyup 执行整个 SHA256 散列......效率低下,但完成了测试工作)。这里的关键是需要在这些 Prehash 字段上执行正则表达式验证和必填字段验证,这些字段仅存在于客户端(显然我不想以任何方式将这些字段传输到服务器)。

所以我手动创建了这两个并将 data-val-* 属性添加到元素中,即它们不是由 MVC 助手生成的,等等。我猜这是我遗漏的地方。当表单在所有字段为空的情况下提交时,所有应该弹出的错误都会弹出,但表单会继续前进并提交。

==

所以我尝试过的事情:

是的,已经调用了不显眼的库 parse() 方法来解析 AJAX 加载的表单内容,并且它似乎正确获取了所有数据验证内容,因为我看到错误显示为字段 blur(),并且当我点击提交(在 ajax 请求完成并替换弹出窗口的内容之前)。

可能的注意事项:在 AJAX 成功将更改密码页面加载到弹出窗口之后,对不显眼库的 parse 方法的调用发生... AJAX 表单提交绑定放在 document.ready 加载的内容,因此,AJAX 表单提交绑定可能在解析方法可能绑定到提交事件的验证调用之前绑定,因此在之前触发......

但是,(1)我在其他地方做同样的事情没有问题,唯一的区别是我手动将这些 data-val-* 属性放在我手动创建的元素上!并且(2),如果我在 OldPassword 或 NewPassword 字段上导致某种错误,即未将值加载到其中而导致必填字段验证错误,它们会显示错误,并成功阻止表单通过 jQuery.Form 提交方法。

所以我认为这里一定有问题:

我知道 jquery.validate 正在制定正确的规则,因为我确实看到了错误。当这些手动生成的元素中出现错误时,它只是不会阻止表单提交,除非我这样做,并在表单的 AJAX 提交中添加一个预提交回调:

虽然这可行,但它有点难看,我相信它会导致验证被调用两次......不是什么大不了的事,但不太理想。那么我需要在不显眼的库中进行其他调用来绑定这些吗?

0 投票
5 回答
26931 浏览

jquery - 使用 jQuery Unobtrusive Validation 时如何添加“submitHandler”函数?

我正在使用 ASP.NET MVC 3 中新的不显眼的验证功能来验证表单。

因此,我没有编写任何代码来设置 jQuery validate 来开始验证我的表单。这一切都是通过加载 jQuery.validate.unobtrusive.js 库来完成的。

不幸的是,我需要敲一个“你确定吗?” 表单有效但在提交之前的消息框。使用 jQuery 验证,您将在初始化时添加选项 handleSubmit,如下所示:

但是使用不显眼的库时不需要初始化。

在这种情况下我可以在哪里/如何添加提交处理程序的任何想法?

谢谢

0 投票
1 回答
3289 浏览

asp.net-mvc - ASP.NET MVC 3 远程验证以允许原始值

我的用户模型的电子邮件属性上有一个远程属性。当我创建一个新用户时,它会创建并告诉用户电子邮件已在使用中。现在我的编辑表单出现问题(如果用户想要更新值)。它告诉用户他/她的电子邮件已经在使用中,当正在使用的电子邮件是注册给用户的电子邮件时,我不希望它给出该消息。如何调整 Remote 属性以使其行为?

0 投票
2 回答
7006 浏览

validation - MVC 3 为远程验证指定验证触发器

我已经使用 MVC 3 不显眼的验证实现了远程验证,如下所示

该模型

控制器

风景

就是这样,一切正常,但是每次按键都会触发ValidationAction,这并不理想,我只想在元素失去焦点时触发,但不知道如何做到这一点

更新

实际上我已经注意到,默认情况下,验证确实会触发一次 onBlur。即元素第一次失去焦点时,但是当尝试更正它时,验证会触发 onKeyUp。我认为这是预期的功能,考虑它可能非常有用。但是,了解是否可以修改此行为会很有用

0 投票
5 回答
9642 浏览

jquery - ASP.Net MVC 3 不显眼的客户端验证不适用于下拉列表

我有一个简单的下拉列表,列表中的第一项有一个空值。如果我没有在列表中选择任何内容,客户端验证将忽略它。我使用注释属性在模型上根据需要设置了该字段。

有任何想法吗?我错过了什么吗?

0 投票
14 回答
76699 浏览

asp.net-mvc - 如何在 MVC 中更改由 @Html 助手生成的“数据验证编号”消息验证

假设这个模型:

和观点:

将继续这个html:

我想自定义data-val-number我猜想生成的错误消息,因为PercentChange它是一个Integer. 我一直在寻找这样的属性来改变它,range或者任何相关的东西都不起作用。
我知道有机会编辑不显眼的 js 文件本身或在客户端覆盖它。data-val-number我想像服务器端的其他人一样更改错误消息。