【发布时间】:2019-11-15 14:46:25
【问题描述】:
我有 2 个字段:名称查询和公司 ID。他们需要满足以下条件:
- 当这两个字段中的一个有效,即不为空,并且显示“请填写...”消息时,可以提交表单
- 这两个字段都在 key up 和 focus out 时进行验证
- 对于公司 ID 字段,它使用正则表达式检查 key up 并聚焦,如果无效,则无法提交表单,并显示消息“Invalid company ID format”
这是我的解决方案:
var myForm = $("#myForm");
$.validator.addMethod("regx", function (value, element, regexpr) {
return regexpr.test(value);
}, function (params, element) {
return "Invalid company ID format"
});
myForm.validate({
rules: {
nameQuery: {
require_from_group: [1, '.mygroup']
},
companyId: {
require_from_group: [1, '.mygroup'],
regx: /^$|^[A-Za-z][A-Za-z]\d\d\d\/\d\/\w\w\w\w+$/
}
},
messages: {
nameQuery: {
required: "Please fill in name query"
},
companyId: {
required: "Please fill in company ID"
}
},
errorClass: "alert",
onkeyup: function(element) {
this.element(element);
},
onfocusout: function(element) {
this.element(element);
},
highlight: function (element, errorClass) {
$(element).addClass(errorClass);
},
submitHandler: function (form) {
$("p").html('Form submitted')
},
invalidHandler: function (form) {
$("p").empty();
}
})
input.alert {
border: 1px solid red;
}
label.alert {
color: red;
}
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.12.0/jquery.validate.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.12.0/additional-methods.js"></script>
<form id="myForm" method="post">
<label for="nameQuery">Name Query: </label>
<input class="mygroup" id="nameQuery" name="nameQuery">
</br>
<label for="companyId">Company Id: </label>
<input class="mygroup" id="companyId" name="companyId">
</br>
<input type="submit" value="Search">
<p></p>
</form>
其他东西运行良好,但自定义消息为空时似乎不起作用,显示默认消息“请填写这些字段中的至少 1 个”。有什么建议吗?
【问题讨论】:
-
您是否尝试将
required设置为所有字段 mbrequire_from_group在您的情况下还不够? -
@Egor S. 是的,我确实尝试过,这导致所有字段都需要验证,而不是 2 个字段中的 1 个。
-
如果您想在
require_from_group上自定义消息,请在require_from_group上设置自定义消息,而不是在required上设置自定义消息。您是否按照我在上一个问题的回答中的建议查看了the documentation for this plugin?
标签: javascript jquery jquery-validate