#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
У меня есть семь флажков, например:
<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") amp;amp; $('#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");
это происходит только в: установлен любой другой флажок или нет
см. Изображение: введите описание изображения здесь
Если я попробую это так:
$.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") amp;amp; $('#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") amp;amp; $('#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") amp;amp; $('#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");
Спасибо
Комментарии:
1. Вам не нужен радиовход?
2. спасибо. нет. не радио. Потому что у вас установлены флажки
3. UM
$(".checkbox:checked").length
?? Это то, о чем вы спрашиваете?
Ответ №1:
Вы можете проверить конкретную проверку по идентификатору, а затем узнать о других по идентификатору формы. Проверьте эту скрипку или прикрепленный фрагмент.
$('#formid :checkbox').change(function() {
//only one is checked and that is Mag gderen afhalen
if ($("#contactpersonen_canseestock_0").is(":checked") amp;amp; $('#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>
Комментарии:
1. Спасибо. Я проверю это. Я дам вам знать.
2. привет. Вы видите изображение?
3. ДА. Я только что это увидел. отредактировав фрагмент, запустите его и установите различные комбинации флажков. Оператор if будет иметь значение true только в том случае, если
Mag gderen afhalen
установлен флажок ONLY .4. Еще одна вещь, я присвоил идентификатор корневому div, содержащему флажки.
<div class="contact-label span11 rights" id="formid">
Это используется для получения всех значений дочерних флажков в этом div. Добавьте это тоже в свой код, когда попробуете.5. Вы видели мое последнее обновление? Он всегда приходит к этой строке: «Адреса электронной почты уже существуют»);
Ответ №2:
я думаю, ваш вопрос о том, сколько проверено, а не о том, проверен ли определенный флажок..
$("input[type='checkbox']:checked").length
даст вам количество установленных флажков..
Ответ №3:
Для этого вам не нужен jQuery…
//To count how many are checked/ticked
document.querySelectorAll('input[type="checkbox"]:checked').length
//To check a specific checkbox...
if(document.getElementById('contactpersonen_canseestock_0').checked) {
// It is checked, do something
} else {
// Not checked, do something else
}
Но если вы хотите jQuery…
if($("#contactpersonen_canseestock_0").is(':checked')){
// It is checked, do something
} else {
// Not checked, do something else
}
Редактировать:
$.validator.addMethod("contactpersonen-email", function(value, element) {
if($("#contactpersonen_canseestock_0").is(':checked')) {
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 {
return;
}
}, "Email adres bestaat al");
Комментарии:
1. Спасибо. Но теперь можно установить и другие флажки. Должно быть, если установлен только contactpersonen_canseestock_0, проверка электронной почты должна быть опущена () .
2. и это было бы уместно, если бы ему пришлось включать jquery только для этой одной задачи..
3. Код в моем примере будет выполняться, только если этот конкретный флажок установлен, для всех остальных флажков он попадет в else { … } условие. Вам нужно будет включить это в событие щелчка, обновит код..
4. @SavantCode Я обновил свой ответ несколькими различными примерами, поскольку я не совсем уверен, чего вы пытаетесь достичь
5. @Zinc. Да, оке. Но функция проверки электронной почты должна быть опущена только и только в том случае, если установлен флажок contactpersonen_canseestock_0 . если установлен флажок contactpersonen_canseestock_0 и установлен другой флажок, то функция электронной почты не была опущена
Ответ №4:
Вы можете просто сделать, как;
document.querySelectorAll("[type=checkbox]:checked").length === 1
В вашем случае точнее:
document.querySelector("div.contact-label.span11.rights")
.querySelectorAll("[type=checkbox]:checked").length === 1 ? doThis()
: doThat();
Ответ №5:
Поскольку вы хотите только проверить, установлен ли этот конкретный флажок, с небольшим количеством jQuery это просто… Используйте условные выражения и :проверено, например:
if($("#contactpersonen_canseestock_0").is(":checked")){
//Skip Function
}
else{
doThisFunction();
}
Надеюсь, это поможет. С уважением 🙂
Комментарии:
1. проверьте, был ли ваш ответ уже опубликован. не полезно иметь один и тот же точный ответ 500 раз на вопрос..
2. Спасибо. Но только если этот флажок установлен. Таким образом, могут быть проверены и другие флажки. Смотрите мое изображение
3. Извините, не понял, что … пока я писал, кто-то ответил тем же.
4. в этом и суть. Конечно, я могу проверить, не установлены ли все остальные флажки. но это, конечно, большая работа. может быть, это может быть по-другому. Спасибо
5. @edd2110. Поэтому, конечно, ваше предложение не устраняет проблему. Потому что, если другие флажки также будут проверены.. Но все равно спасибо за ваш ответ