我试图得到它,如果用户填写了至少一个输入,那么表单就会被提交。
我想我不确定这段代码是什么:jQuery Validate - require at least one field in a group to be filled做得很好,让它适合我。
任何帮助将不胜感激:
在我看了上面的答案后,我尝试了这个:
我有这样的表格:
<form id="myForm">
<input class="fillone" id="bigform" name="message" type="text" required/>
<input class="fillone" id="bigform" name="number" type="text" required/>
<input type="submit" id="btnSubmit" />
</form>
和脚本:
if(!$(element).data('being_validated')) {
var fields = $(selector, element.form);
fields.data('being_validated', true);
fields.valid();
fields.data('being_validated', false);
}
return validOrNot;
}, jQuery.format("Please fill at least {0} of these fields."));
$.validator.addMethod("require_from_group", function(value, element, options) {
var selector = options[1];
var validOrNot = $(selector, element.form).filter(function() {
return $(this).val();
}).length >= options[0];
$("#myForm").validate({
groups: {
message: {require_from_group: [1,".fillone"]},
number: {require_from_group: [1,".fillone"]},
});
答案 0 :(得分:1)
你的整个剧本都是混乱的胡说八道,充满了语法错误....这是一个断断续续的点点滴滴的汇编。这就像你将require_from_group
切成两段代码并在删除一些内容后换掉这两段...
if(!$(element).data('being_validated')) { // this part comes from INSIDE 'require_from_group'
var fields = $(selector, element.form);
fields.data('being_validated', true);
fields.valid();
fields.data('being_validated', false);
}
return validOrNot;
// this line should be the last line of 'addMethod', NOT after a comma following a conditional
}, jQuery.format("Please fill at least {0} of these fields."));
// this is start of 'addMethod" but its guts are just above
$.validator.addMethod("require_from_group", function(value, element, options) {
var selector = options[1];
var validOrNot = $(selector, element.form).filter(function() {
return $(this).val();
}).length >= options[0]; // 'addMethod' can't end here!
$("#myForm").validate({
// this is all wrong...
groups: {
message: {require_from_group: [1,".fillone"]},
number: {require_from_group: [1,".fillone"]},
});
忘记手动包括required_from_group
。只需添加已经有required_from_group
方法的the latest additional-methods.js
file。
现在让我们谈谈您实施.validate()
方法......
$("#myForm").validate({
groups: {
message: {require_from_group: [1,".fillone"]},
number: {require_from_group: [1,".fillone"]},
});
和你的HTML:
<input class="fillone" id="bigform" name="message" type="text" required/>
<input class="fillone" id="bigform" name="number" type="text" required/>
<强>问题强>:
1)groups
选项仅用于将错误消息分组在一起,不用于分配规则。它只包含一个任意名称和一个空格分隔的字段名称列表,其消息将被分组在一起。不要将此选项与require_from_group
规则混淆。虽然它们可以一起使用,但它们彼此无关。 See documentation
groups: { // group some messages together
myGroup: "message number" // names of fields to group their messages
} // <- you were also missing this closing brace
2)每当在.validate()
方法中声明规则时,必须使用rules
选项声明。我在rules
内看不到.validate()
选项。
rules: { // declare the rules
message: { // name of field
require_from_group: [1,".fillone"]
},
number: { // name of field
require_from_group: [1,".fillone"]
}
}
3)您已将required
属性放在input
个元素中。这告诉插件两个字段都有required
规则。如果您只需要其中一个required
,那么您也无法同时使用required
。 require_from_group[1, ..]
表示组中至少有一个是required
。如果您确实要使用required
规则,请从input
元素中删除require_from_group
属性。
<input class="fillone" id="bigform" name="message" type="text" />
<input class="fillone" id="bigform" name="number" type="text" />
$("#myForm").validate({ // initialize the plugin
rules: { // declare the rules
message: { // name of field
require_from_group: [1,".fillone"]
},
number: { // name of field
require_from_group: [1,".fillone"]
}
},
groups: { // group some messages together
myGroup: "message number" // names of fields to group their messages
}
});