2017-02-22 13 views
1

Хорошо, я создал этот плагин для wordpress, пытаясь найти решение для этой простой задачи, что несколько строк js должны работать ... просто для снятия отметки с других флажков когда один проверяется.Снимите отметку с других флажков, если один из них отмечен

I имеют 4 входных в гнездились в DIV-х в соответствии с этим:

<div class="nutrition-mc-group nutrition-mc-group-activity-level"> 
 
    <div class="nutrition-mc-selection-box"> 
 
    <div class="nutrition-mc-checkbox-outter"> 
 
     <input type="checkbox" id="squared-checkbox1"> 
 
     <label class="nutrition-mc-checkbox" id="mc-sedentary-select" for="squared-checkbox1"></label> 
 
    </div> 
 
    <p class="nutrition-mc-notes nutrition-mc-notes-switch">Sedentary</p> 
 
    <p class="nutrition-mc-description">Typical desk job/Sitting most of the day</p> 
 
    </div> 
 
    <div class="nutrition-mc-selection-box"> 
 
    <div class="nutrition-mc-checkbox-outter"> 
 
     <input type="checkbox" id="squared-checkbox2"> 
 
     <label class="nutrition-mc-checkbox" id="mc-lightly-active-select" for="squared-checkbox2"></label> 
 
    </div> 
 
    <p class="nutrition-mc-notes nutrition-mc-notes-switch">Lightly Active </p> 
 
    <p class="nutrition-mc-description">Walking around a good amount, retail jobs</p> 
 
    </div> 
 
    <div class="nutrition-mc-selection-box"> 
 
    <div class="nutrition-mc-checkbox-outter"> 
 
     <input type="checkbox" id="squared-checkbox3"> 
 
     <label class="nutrition-mc-checkbox" id="mc-moderately-active-select" for="squared-checkbox3"></label> 
 
    </div> 
 
    <p class="nutrition-mc-notes nutrition-mc-notes-switch">Moderately Active</p> 
 
    <p class="nutrition-mc-description">Walking constantly in a fast paced environment, waiting tables</p> 
 
    </div> 
 
    <div class="nutrition-mc-selection-box"> 
 
    <div class="nutrition-mc-checkbox-outter"> 
 
     <input type="checkbox" id="squared-checkbox4"> 
 
     <label class="nutrition-mc-checkbox" id="mc-vigorously-active-select" for="squared-checkbox4"></label> 
 
    </div> 
 
    <p class="nutrition-mc-notes nutrition-mc-notes-switch">Vigorously Active</p> 
 
    <p class="nutrition-mc-description">Very labor intensive, construction workers</p> 
 
    </div> 
 
</div>

теперь JS немного отличается, я попытался упростить ее как можно больше:

this.allActive = this.mod.find('.nutrition-mc-group-activity-level input');  

_init: function(){ 
     this.allActive.on('change', $.proxy(this._uncheckActivityBtn, this)); 
}, 
_uncheckActivityBtn: function(){ 
     $(this.allActive).not(this).prop('checked', false); 
}, 

Он работает нормально, но его как будто он не признает аргумент части not(this). , если я меняю .prop на true, он меняет аргумент, и все проверки проверяются при его проверке. Я не могу понять, почему он не понимает часть аргумента this и не исключает выбранное в данный момент поле.

Я попытался просто переместить все в одной функции, но при выполнении отладки вывод дал ошибку для оператора not (this), говоря что-то о нем не указано.

+4

Для этого, похоже, вам просто нужно использовать переключатель, а не флажок. Поведение тогда происходит по умолчанию, когда все входы имеют одинаковый атрибут 'name' –

+0

yes ... пожалуйста, используйте переключатель для этого поведения –

ответ

1

У нас было аналогичное требование в нашем проекте, и мы включили его с помощью переключателя. Просто измените стиль в соответствии с вашим руководством по стилю.

Примечание: все входы радиокнопки должны иметь то же имя.

+0

Я только что попробовал использовать вход с радиоприемником, и он по-прежнему выполняет то же самое, что и он просто не распознает 'not (this)' часть кода, если я переключусь с 'true' на' false', он просто проверяет все из них на non (если установлено по умолчанию по умолчанию). – David

+0

Вы не будете требовать, чтобы 'not (this)' code, если вы используете переключатель. –

+0

Все еще не работает :(, что-то другое с радиокнопкой разума, когда я включаю их, они не выключаются, я отключил все мои js, чтобы увидеть, было ли что-то, что это произвело, и это все еще не сработало. не знаю, почему это было бы. – David