不完全确定并且无法找到允许x个验证中的1个在整个表单上通过验证的设置。
我必须使用.rules(“add”函数,因为我的字段在name属性中有数组键。 当所有字段都失败但是如果1个字段具有有效内容时,jQuery Validate按预期工作,整个表单将通过验证。
<form id="new_user_session">
<input class="input-block-level sq-input" id="user_session_email" name="user_session[email]" placeholder="email address" type="text">
<input class="input-block-level sq-input" id="user_session_password" name="user_session[password]" placeholder="password" type="password">
</form>
<script type="text/javascript">
jQuery(function() {
jQuery('#new_user_session').validate();
jQuery("#user_session_email").rules("add", {
email: true,
messages: {
email: "Please insert a valid email address",
required: "Please insert your email address"
},
required: true
});
jQuery("#user_session_password").rules("add", {
messages: {
required: "Please insert your password"
},
required: true
});
});
</script>
提前致谢!
答案 0 :(得分:1)
经过一些搜索,它似乎是known issue与最后一个版本的validate插件。在添加规则时使用messages
属性时会发生这种情况。
您有两个直接解决此问题的方法:
编辑:作者使用this commit解决了问题,因此您可以添加第三个解决方案:
答案 1 :(得分:1)
您首先不需要使用rules('add')
方法,因此您可以轻松完全避免使用the bug。
只需点击documented guidelines for names
that contain brackets,然后用引号括起来。
工作演示:http://jsfiddle.net/K65e5/
$(document).ready(function () {
$('#new_user_session').validate({
rules: {
'user_session[email]': {
email: true,
required: true
},
'user_session[password]': {
required: true
}
},
messages: {
'user_session[email]': {
email: "Please insert a valid email address",
required: "Please insert your email address"
},
'user_session[password]': {
required: "Please insert your password"
}
}
});
});