Я не уверен, что я делаю неправильно, но только первая половина моего скрипта подбирается. Я пробовал различные комбинации и могу получить только одно из операторов if за раз.
if (!$('#LocalDelivery').is(":checked")) {
$('#datepicker').attr("value", "");
$('#LocalDate').val($('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').val());
$('#LocalDate').attr('name',
$('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').attr('name'));
}
else
{
if (!$('#StandardShip').is(":checked")) {
$('#LocalDate').attr("value", "");
$('#datepicker').val($('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').val());
$('#datepicker').attr('name',
$('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').attr('name'));
}
}
Спасибо.
EDIT: Чтобы уточнить, я понимаю, что "другое" означает либо одно, либо другое. Проблема здесь в том, что даже если условие выполнено для 2-го оператора if, оно не выполняется. Я могу получить реакцию только от одного из них, если вы делаете это за один раз, используя приведенный выше код или любую аналогичную вариацию, которую я пробовал.
Пытаться:
if ($('#LocalDelivery').is(":checked") == false) {
$('#datepicker').attr("value", "");
$('#LocalDate').val($('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').val());
$('#LocalDate').attr('name',
$('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').attr('name'));
}
if ($('#StandardShip').is(":checked") == false) {
$('#LocalDate').attr("value", "");
$('#datepicker').val($('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').val());
$('#datepicker').attr('name',
$('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').attr('name'));
}
Вы также можете изменить .is(":checked")
с .attr("checked","checked")
.
EDIT: Я только заметил, что вы пытаетесь реализовать два определенных значения в одном элементе #datepicker
и это должно быть причиной того, что ваш первый условный #datepicker
не будет выбран.
Я имею в виду, что когда оба checboxes не проверяются, вы пытаетесь поместить TWO значения в элемент ONE # #datepicker
.
Вышеизложенное означает, что логика вашего кода неверна. Вместо этого вы можете иметь только один флажок и сделать следующее:
if ($('#LocalDelivery').is(":checked") == false) {
$('#datepicker').attr("value", "");
$('#LocalDate').val($('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').val());
$('#LocalDate').attr('name',
$('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').attr('name'));
} else {
$('#LocalDate').attr("value", "");
$('#datepicker').val($('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').val());
$('#datepicker').attr('name',
$('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').attr('name'));
}
else if
и скажите мне результат. Также есть ли другой код, связанный с этими условиями, который вы не разместили здесь?
Пытаться
if (!$('#LocalDelivery').is(":checked")) {
$('#datepicker').attr("value", "");
$('#LocalDate').val($('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').val());
$('#LocalDate').attr('name',
$('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').attr('name'));
}
if (!$('#StandardShip').is(":checked")) {
$('#LocalDate').attr("value", "");
$('#datepicker').val($('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').val());
$('#datepicker').attr('name',
$('.productAttributeConfigurableEntryText div.productAttributeValue input[type="text"]').attr('name'));
}
Если вы используете else, второй, if
будет выполнен, если первый возвращает false
, значит, вы получили то, что вы ожидали. Первый, if
возвращает true, поэтому второй игнорируется.
Это то, что if
и else
в виду.
if (A) {
B
}
else {
C
}
Если A
, то B
, в противном случае C
Если вы не намеревались "иначе" часть этого маленького уравнения, то не используйте else
!
if
внутри else
« if
?
И именно так оно и должно работать. Если первая половина равна true
блок else
не будет выполнен. Каждый раз выполняется только один блок. Никогда
To clarify, I do understand 'else' means either one or the other. The problem here is that even if the condition is met for the 2nd if statement, it doesn't execute.
Ты противоречишь себе. Вы говорите, что понимаете, что работать может только один, но потом говорите, что удивлены этим.else
является конструкцией Javascript. jQuery - это просто библиотека JavaScript, которую вы используете.