我有七个复选框,如下所示:
<div class="contact-label span11 rights">
<div class="row-fluid">
<div class="span3">
<input type="checkbox" class="input-text" value="Y" name="contactpersonen_canorder_0" id="contactpersonen_canorder_0"></input>
<label class="checkbox" for="contactpersonen_canorder_0">Mag border plaatsen</label>
<input type="checkbox" class="input-text" value="Y" name="contactpersonen_canseestock_0" id="contactpersonen_canseestock_0"></input>
<label class="checkbox" for="contactpersonen_canseestock_0">Mag gderen afhalen</label>
</div>
<div class="span3">
<input type="checkbox" class="input-text" value="Y" name="contactpersonen_canseeorders_0" id="contactpersonen_canseeorders_0"></input>
<label class="checkbox" for="contactpersonen_canseeorders_0">Mag orders inzien</label>
<input type="checkbox" class="input-text" value="Y" name="contactpersonen_canaddaddress_0" id="contactpersonen_canaddaddress_0"></input>
<label class="checkbox" for="contactpersonen_canaddaddress_0">Mag bezorgadressen aanpassen</label>
</div>
<div class="span3">
<input type="checkbox" class="input-text" value="Y" name="contactpersonen_canseeprice_0" id="contactpersonen_canseeprice_0"></input>
<label class="checkbox" for="contactpersonen_canseeprice_0">Mag netto prijs zien</label>
<input type="checkbox" class="input-text" value="Y" name="contactpersonen_canseecredit_0" id="contactpersonen_canseecredit_0"></input>
<label class="checkbox" for="contactpersonen_canseecredit_0">Mag facturen en creditfacturen inzien</label>
</div>
<div class="span3">
<input type="checkbox" class="input-text" value="Y" name="contactpersonen_canseepickup_0" id="contactpersonen_canseepickup_0"></input>
<label class="checkbox" for="contactpersonen_canseepickup_0">Mag wijzigingen doorgeven</label>
</div>
</div>
</div>
我有一个 JavaScript 函数来检查重复的电子邮件,如下所示:
$.validator.addMethod("contactpersonen-email", function(value, element) {
var parentForm = $(element).closest('form');
var timeRepeated = 0;
if (value != '') {
$(parentForm.find(':text')).each(function () {
if ($(this).val() === value) {
timeRepeated++;
}
});
}
var ok = timeRepeated === 1 || timeRepeated === 0;
if(!ok) alert('Emaild adres bestaat al');
return ok;
}, "Email adres bestaat al");
但现在如果只选中此复选框:
<input type="checkbox" class="input-text" value="Y" name="contactpersonen_canseestock_0" id="contactpersonen_canseestock_0"></input>
<label class="checkbox" for="contactpersonen_canseestock_0">Mag gderen afhalen</label>
然后就是必须跳过电子邮件复制功能
但是检查这一点的最简单方法是什么?或者您必须检查其他所有复选框是否都未选中?
谢谢
为了清晰起见,这是一个屏幕截图:
好吧,但如果我这样做:
$.validator.addMethod("contactpersonen-email", function(value, element) {
var parentForm = $(element).closest('form');
var timeRepeated = 0;
if (value != '') {
$(parentForm.find(':text')).each(function () {
if ($(this).val() === value) {
timeRepeated++;
}
});
}
//
$("#contactpersonen_canseestock_0").attr('checked', true);
//Alleen een is checked en dat is Mag gderen afhalen
if ($("#contactpersonen_canseestock_0").is(":checked") && $('#formid :checkbox:checked').length == 1) {
alert("checked");
} else {
// any other check box is checked or none
alert("other combination");
}
//
var ok = timeRepeated === 1 || timeRepeated === 0;
if(!ok) alert('Emaild adres bestaat al');
return ok;
}, "Email adres bestaat al");
它只出现在:任何其他复选框被选中或没有
看图片: enter image description here
如果我这样尝试:
$.validator.addMethod("contactpersonen-email", function(value, element) {
if($("#contactpersonen_canseestock_0").is(':checked')) {
console.log('email is nice');
var parentForm = $(element).closest('form');
var timeRepeated = 0;
if (value != '') {
$(parentForm.find(':text')).each(function () {
if ($(this).val() === value) {
timeRepeated++;
}
});
}
var ok = timeRepeated === 1 || timeRepeated === 0;
if(!ok) alert('Emaild adres bestaat al');
return ok;
}else{
console.log('jkshdfkjsdhf');
return;
}}, "email bestaat al" )
它不起作用。看图片:
好吧。我现在是这样的:$.validator.addMethod("contactpersonen-email", function(value, element) {
var parentForm = $(element).closest('form');
var timeRepeated = 0;
if (value != '') {
$(parentForm.find(':text')).each(function () {
if ($(this).val() === value) {
timeRepeated++;
}
});
}
//
//
var ok = timeRepeated === 1 || timeRepeated === 0;
$("#contactpersonen_canseestock_0").attr('checked', true);
//Alleen een is checked en dat is Mag gderen afhalen
if ($("#contactpersonen_canseestock_0").is(":checked") && $('#formid :checkbox:checked').length == 1) {
console.log("checked");
return;
} else {
if(!ok) alert('Emaild adres bestaat al');
return ok;
// any other check box is checked or none
console.log("other combination");
}
//if(!ok) alert('Emaild adres bestaat al');
//return ok;
}, "Email adres");
所以我看到它是整数:
console.log("checked");
。但这也让她进来了:
}, "Email adres");
当然不是必须的。
也许它会来,因为我在上面的文件中有这样的内容:
contactpersonen_email1:{
required:true,
email:true
},
但是如果选中第一个复选框,那么当然不需要。
谢谢
如果这样做:
if ($("#contactpersonen_canseestock_0").is(":checked") && $('#formid :checkbox:checked').length == 1) {
console.log("checked");
return;
} else {
if(!ok) alert('Emaild adres bestaat al');
console.log('not checked');
return ok;
// any other check box is checked or none
console.log("other combination");
}
return;
//if(!ok) alert('Emaild adres bestaat al');
//return ok;
});
所以这个:
}); then I will get this warning:
警告:没有为 contactpersonen_email 定义消息
如何结合此方法:
$('#formid :checkbox').change(function() {
//only one is checked and that is Mag gderen afhalen
if ($("#contactpersonen_canseestock_0").is(":checked") && $('#formid :checkbox:checked').length == 1) {
console.log("only Mag gderen afhalen checked");
} else {
// any other check box is checked or none
console.log("other combination");
}});
使用此方法:
$.validator.addMethod("contactpersonen-email", function(value, element) {
var parentForm = $(element).closest('form');
var timeRepeated = 0;
if (value != '') {
$(parentForm.find(':text')).each(function () {
if ($(this).val() === value) {
timeRepeated++;
}
});
}
var ok = timeRepeated === 1 || timeRepeated === 0;
if(!ok) alert('Emaild adres bestaat al');
return ok;
}, "Email adres bestaat al");
谢谢
最佳答案
您可以通过id查看具体的检查,然后通过form id了解其他的检查。看看这个fiddle或附加的片段。
$('#formid :checkbox').change(function() {
//only one is checked and that is Mag gderen afhalen
if ($("#contactpersonen_canseestock_0").is(":checked") && $('#formid :checkbox:checked').length == 1) {
console.log("only Mag gderen afhalen checked");
} else {
// any other check box is checked or none
console.log("other combination");
}});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="contact-label span11 rights" id="formid">
<div class="row-fluid">
<div class="span3">
<input type="checkbox" class="input-text" value="Y" name="contactpersonen_canorder_0" id="contactpersonen_canorder_0"></input>
<label class="checkbox" for="contactpersonen_canorder_0">Mag border plaatsen</label>
<input type="checkbox" class="input-text" value="Y" name="contactpersonen_canseestock_0" id="contactpersonen_canseestock_0"></input>
<label class="checkbox" for="contactpersonen_canseestock_0">Mag gderen afhalen</label>
</div>
<div class="span3">
<input type="checkbox" class="input-text" value="Y" name="contactpersonen_canseeorders_0" id="contactpersonen_canseeorders_0"></input>
<label class="checkbox" for="contactpersonen_canseeorders_0">Mag orders inzien</label>
<input type="checkbox" class="input-text" value="Y" name="contactpersonen_canaddaddress_0" id="contactpersonen_canaddaddress_0"></input>
<label class="checkbox" for="contactpersonen_canaddaddress_0">Mag bezorgadressen aanpassen</label>
</div>
<div class="span3">
<input type="checkbox" class="input-text" value="Y" name="contactpersonen_canseeprice_0" id="contactpersonen_canseeprice_0"></input>
<label class="checkbox" for="contactpersonen_canseeprice_0">Mag netto prijs zien</label>
<input type="checkbox" class="input-text" value="Y" name="contactpersonen_canseecredit_0" id="contactpersonen_canseecredit_0"></input>
<label class="checkbox" for="contactpersonen_canseecredit_0">Mag facturen en creditfacturen inzien</label>
</div>
<div class="span3">
<input type="checkbox" class="input-text" value="Y" name="contactpersonen_canseepickup_0" id="contactpersonen_canseepickup_0"></input>
<label class="checkbox" for="contactpersonen_canseepickup_0">Mag wijzigingen doorgeven</label>
</div>
</div>
</div>
关于javascript - 检查是否仅选中一个复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39980216/