Проблема с jQuery 'else'

0

Я не уверен, что я делаю неправильно, но только первая половина моего скрипта подбирается. Я пробовал различные комбинации и могу получить только одно из операторов 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, оно не выполняется. Я могу получить реакцию только от одного из них, если вы делаете это за один раз, используя приведенный выше код или любую аналогичную вариацию, которую я пробовал.

  • 0
    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. Ты противоречишь себе. Вы говорите, что понимаете, что работать может только один, но потом говорите, что удивлены этим.
  • 0
    Кстати, язык JavaScript. else является конструкцией Javascript. jQuery - это просто библиотека JavaScript, которую вы используете.
Показать ещё 3 комментария
Теги:

4 ответа

2
Лучший ответ

Пытаться:

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')); 

    }
  • 0
    Стефанос большое спасибо за ваш ответ. Как я сказал в своем ответе «Человеку снега»: «Это одна из версий, которую я попробовал, но пошел дальше и дал еще один шанс. К сожалению, он выбирает только последнее условие if, которое все еще не работает». Есть другие идеи?
  • 0
    Если вы хотите пойти и использовать else if и скажите мне результат. Также есть ли другой код, связанный с этими условиями, который вы не разместили здесь?
Показать ещё 6 комментариев
2

Пытаться

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, поэтому второй игнорируется.

  • 0
    Спасибо за ответ! Это одна версия, которую я попробовал, но пошел дальше и дал еще один шанс. К сожалению, он принимает только последний оператор if, поэтому все еще не работает.
  • 0
    F12 и проверьте, есть ли красные буквы X, иногда вы что-то пишете неправильно, и это блокирует часть кода
Показать ещё 1 комментарий
1

Это то, что if и else в виду.

if (A) {
   B
}
else {
   C
}

Если A, то B, в противном случае C

Если вы не намеревались "иначе" часть этого маленького уравнения, то не используйте else !

  • 0
    Привет, в соответствии с моим комментарием к laaposto: «Извините, я был неясен. Я понимаю это. То, что я говорю, это когда другое условие выполнено, оно не подхватывает его. Только одно из утверждений if когда-либо работало одновременно. "
  • 0
    @susan: Извините, но это не имеет никакого смысла. Возможно, вы пропустили это ваше второе « if внутри else « if ?
Показать ещё 2 комментария
1

И именно так оно и должно работать. Если первая половина равна true блок else не будет выполнен. Каждый раз выполняется только один блок. Никогда

  • 0
    Извините, мне было неясно. Это я поняла. То, что я говорю, - то, что когда другое условие выполнено, это не поднимает это. Только один из операторов if когда-либо функционален.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню