- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 jquery 验证并且我已经设置了组。但是,我无法找出分别验证每个组及其包含的各个字段的最佳方法。
为了说明这一点:
我有城市、州和邮政编码(按顺序)。如果有人输入 zip 的值,他们应该得到肯定的确认(我已经让该部分在输入处使用绿色复选标记),但是,只要状态和 zip 为空,组验证消息仍然应该显示。
经过多次尝试,我遇到了以下问题:- 用户跳过“城市”和消息显示的验证,但是当为“zip”提供输入时,验证消息消失。 (这很奇怪......也许是一个错误?)- 用户输入“城市”,他们甚至在进入“州”之前就收到组错误消息- 用户输入“城市”,但不会获得复选标记,因为组中的其他输入为空
我倾向于通过覆盖“onfocusout”事件(通过让它检查 focusout 组中的所有输入)来解决这个问题,但不确定是否有更好的方法通过一些验证的内置方法
谢谢!
*更新
我提出的解决方案相当丑陋,而且没有一个能够一致地工作,下面是一个例子,它导致与我上面列出的第一个问题相反的结果。现在,验证消息仅在填写组中的最后一个字段时显示。
也许组验证依赖于组中最后一次测试的验证结果?
无论如何......这是我到目前为止遇到的困惑:
设置组:
groups : { location : 'city state zip' }
为组创建规则(注意它必须是一个数组以保留顺序):
rules : { location : ['city, 'state', 'zip']}
现在覆盖 onfocusout:
onfocusout : function(el) {
var groups = this.groups
, elName = el.name
, elGroup = groups[elName]
, $el = $(el)
if (!this.checkable(el) ){
this.element(el));
}
// If the element belongs to a group, validate all elements in the group
// that come before the current element
if (elGroup) {
var groupMembers = this.settings.rules[elGroup];
for (var i=0; i<groupMembers.length; i++) {
if ( groupMembers[i] === elName ) {
break;
}
this.element( $('[name="' + groupMembers[i] + '"]') );
}
}
}
最佳答案
这个插件的“组”功能似乎有一些仍然悬而未决的问题,其中一些看起来与您的问题有关。
https://github.com/jzaefferer/jquery-validation/issues/search?q=groups
关于javascript - jQuery 验证 : Group Validation But Not Field Validation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7629493/
我是一名优秀的程序员,十分优秀!