- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个“更改密码”页面,需要在发送之前对通过 Javascript 在页面上输入的所有密码进行哈希处理。更复杂的是,页面是通过 jQuery load() 调用加载的,并通过 jQuery.Form ajaxForm() 调用提交的。在 MVC2 中一切正常,但 MVC3 给我带来了麻烦。
也就是说,我有一个带有“更改密码”链接的页面,单击该链接时,会将更改密码页面加载到 jQuery 模式弹出窗口中,然后通过 jQuery.Form 库提交更改密码页面上的表单(本质上是只是包装一个 $.ajax 调用),并将其结果返回到模态相同的模态弹出窗口中。本质上,我有一个具有两个属性的模型:OldPassword 和 NewPassword。我有两个由 View 生成的隐藏字段。它们保存其他两个字段(PrehashOldPassword 和 PrehashNewPassword)的哈希值,并通过 keyup 事件进行更新(我知道,这意味着它在每个 keyup 上执行整个 SHA256 哈希......效率低下,但完成了测试工作)。这里的关键是,需要对这些 Prehash 字段执行正则表达式验证和必填字段验证,这些字段仅存在于客户端(显然我不想以任何方式将这些字段传输到服务器)。
因此,我手动创建这两个元素,并将 data-val-* 属性添加到元素中,即它们不是由 MVC 帮助程序等生成的。我猜这就是我遗漏的地方。当表单在所有字段为空的情况下提交时,所有应该弹出的错误都会弹出,但表单会直接继续并提交。
==
所以我尝试过的事情:
是的,不引人注目的库 parse() 方法已经被调用来解析 AJAX 加载的表单内容,并且它似乎正确地获取了所有数据验证内容,因为我看到错误显示为字段模糊(),并且当我点击提交时(在 ajax 请求完成并替换弹出窗口的内容之前)。
可能的注意事项:对不显眼库的解析方法的调用发生在 AJAX 成功将更改密码页面加载到弹出窗口之后... AJAX 表单提交绑定(bind)被放置在已加载内容的 document.ready 上,因此,AJAX表单提交绑定(bind)可以在解析方法可能绑定(bind)到提交事件的验证调用之前绑定(bind),因此在验证调用之前触发...
但是,(1)我在其他地方做同样的事情没有问题,唯一的区别是我手动将这些 data-val-* 属性放在我手动创建的元素上! (2),如果我在 OldPassword 或 NewPassword 字段上导致某种错误,即由于未向其中加载值而导致必填字段验证错误,它们会显示错误,并成功停止通过 jQuery.Form 提交表单方法。
所以我认为这里一定出了问题:
<input id="PrehashNewPassword" type="password" name="PrehashNewPassword" data-val-required="The password field is required." data-val-regex-pattern="<%= RegexHelper.PasswordRegularExpression %>" data-val-regex="<%= RegexHelper.PasswordRegularExpressionError %>" data-val="true" />
我知道 jquery.validate 的规则是正确的,因为我确实看到了错误。当这些手动生成的元素中出现错误时,它只是不会阻止表单提交,除非我执行类似的操作,并在表单的 AJAX 提交上添加预提交回调:
$("#ChangePasswordForm").ajaxForm({
beforeSubmit: function () { if (!$('#ChangePasswordForm').valid()) { return false; } },
target: '#overlay'
});
虽然这有效,但它有点丑陋,我相信它会导致验证被调用两次......没什么大不了的,但不太理想。那么我是否需要在不显眼的库中进行其他调用来绑定(bind)它们?
最佳答案
不确定您是否发现了问题,但您可以尝试返回错误如果表格无效...
.
.
.
if (!$('form').valid()) {
return false;
}
// JSON POST...
.
.
.
如果这不起作用,那么您可以尝试使用:
$.validator.unobtrusive.parse($("#dynamicData"));
动态添加自定义输入后。 “dynamicData”是围绕表单的元素的 ID
关于asp.net-mvc - ASP.NET MVC3 自定义不显眼的客户端验证不会阻止 Ajax 表单发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4718479/
在 JSF2 应用程序中遇到验证属性的问题时,有两种主要方法。 使用 Annotation 在 ManagedBean 上定义验证 @ManagedBean public class MyBean {
我想实现一个不常见的功能,我认为 jquery 验证插件将是最好的方法(如果您在没有插件的情况下建议和回答,我们也会欢迎)。我想在用户在输入字段中输入正确的单词后立即隐藏表单。我试过这个: $("
我有几个下拉菜单(类名为month_dropdown),并且下拉菜单的数量不是恒定的。我怎样才能为它们实现 NotEqual 验证。我正在使用 jQuery 验证插件。 这就是我写的 - jQuery
我设法制作了这个网址验证代码并且它起作用了。但我面临着一个问题。我认为 stackoverflow 是获得解决方案的最佳场所。 function url_followers(){ var url=do
我目前正在使用后端服务,该服务允许用户在客户端应用程序上使用 Google Games 库登录。 用户可以通过他们的 gplay ID 向我们发送信息,以便登录或恢复旧帐户。用户向我们发送以下内容,包
我正在尝试验证输入以查看它是否是有效的 IP 地址(可能是部分地址)。 可接受的输入:172、172.112、172.112.113、172.112.113.114 Not Acceptable 输入
我从 Mongoose 验证中得到这条消息: 'Validator failed for path phone with value ``' 这不应该发生,因为不需要电话。 这是我的模型架构: var
我一直在尝试使用Python-LDAP (版本 2.4.19)在 MacOS X 10.9.5 和 Python 2.7.9 下 我想在调用 .start_tls_s() 后验证与给定 LDAP 服务
我正在处理一个仅与 IE6 兼容的旧 javascript 项目(抱歉...),我想仅在 VS 2017 中禁用此项目的 ESLint/CSLint/Javascript 验证/CSS 验证。 我知道
我正在寻找一种方法来验证 Spring 命令 bean 中的 java.lang.Double 字段的最大值和最小值(一个值必须位于给定的值范围之间),例如, public final class W
我正在尝试在 springfuse(JavaEE 6 + Spring Framework (针对 Jetty、Tomcat、JBoss 等)) 和 maven 的帮助下构建我的 webapps 工作
我试图在我们的项目中使用 scalaz 验证,但遇到了以下情况: def rate(username: String, params: Map[String, String]): Validation
我有一个像这样的 Yaml 文件 name: hhh_aaa_bbb arguments: - !argument name: inputsss des
我有一个表单,人们可以单击并向表单添加字段,并且我需要让它在单击时验证这些字段中的值。 假设我单击它两次并获取 2 个独立的字段集,我需要旋转 % 以确保它在保存时等于 100。 我已放入此函数以使其
在我的页面中有一个选项可以创建新的日期字段输入框。用户可以根据需要创建尽可能多的“截止日期”和“起始日期”框。就像, 日期_to1 || date_from1 日期到2 ||日期_from2 date
我有一个像这样的 Yaml 文件 name: hhh_aaa_bbb arguments: - !argument name: inputsss des
有没有办法在动态字段上使用 jquery 验证表单。 我想将其设置为必填字段 我正在使用 Jsp 动态创建表单字段。 喜欢 等等...... 我想使用必需的表单字段验证此表单字段。 最佳答
嗨,任何人都可以通过提供 JavaScript 代码来帮助我验证用户名文本框不应包含数字,它只能包含一个字符。 最佳答案 使用正则表达式: (\d)+ 如果找到匹配项,则字符串中就有一个数字。 关于J
我有两个输入字段holidayDate和Description(id=tags) $(document).ready(function() {
我遇到了这个问题,这些验证从电子邮件验证部分开始就停止工作。 我只是不明白为什么即使经过几天的观察,只是想知道是否有人可以在这里指出我的错误? Javascript部分: function valid
我是一名优秀的程序员,十分优秀!