2013-12-18 3 views
1

В этом разделе кода используется jQuery для скрытия/отображения полей формы. Когда они скрыты, значения этих полей устанавливаются как пустые. Это легко для поля ввода с его уникальным идентификатором. У меня проблемы с флажками. Код ниже работает для трех флажков. Но я должен использовать эту же методику для набора из 26 флажков. Как я могу сделать это более эффективно?Более эффективный способ использования document.getElementById для флажков?

$(".transfer").click(function(){ 
    if ($('input[name=transfer_position]:checked').val() == "yes") { 
     //Slide Down Effect 
     $(".transfer_details").slideDown("slow"); 
     document.getElementById('transfer_interest').focus(); 
    } else { 
     //Slide Up Effect 
     $(".transfer_details").slideUp("slow"); 
     document.getElementById('transfer_interest').value = ""; 
     document.getElementById('select_positions_0').checked = false; 
     document.getElementById('select_positions_1').checked = false; 
     document.getElementById('select_positions_2').checked = false; 
    } 
}); 

<li> 
     <label> 
     <input type="radio" name="transfer_position" class="transfer" value="yes" id="transfer_position_0" /> 
     Yes</label> 
     <label> 
     <input type="radio" name="transfer_position" class="transfer" value="no" id="transfer_position_1" /> 
     No</label> 
    </li> 
    <li class="transfer_details"> 
    <label for="transfer_interest">Why are you interested in transferring to your selected SL positions and what would you bring to that position(s) and team(s)?</label> 
    <textarea name="transfer_interest" id="transfer_interest" cols="80" rows="6"> </textarea> 
    </li> 
    <li class="transfer_details"> 
     <label> 
     <input type="checkbox" name="select_positions[]" class="select_positons" value="Resident Advisor" id="select_positions_0" /> 
     Resident Advisor</label> 
     <label> 
     <input type="checkbox" name="select_positions[]" class="select_positons" value="Programming Assistant" id="select_positions_1" /> 
     Programming Assistant</label> 
     <label> 
     <input type="checkbox" name="select_positions[]" class="select_positons" value="Social Justice Advocate " id="select_positions_2" /> 
     Social Justice Advocate </label> 
    </li> 
+0

Все они имеют одинаковый класс. считаете ли вы их выбором по классу? или по имени? или общим родителем? –

ответ

3

Используйте классы, так как многие элементы могут совместно использовать класс. Таким образом, вы просто снимите все флажки с определенным классом:

$('.select_positions').attr('checked', false); 
+0

Добавление примечания, чтобы убедиться, что пользователь имеет библиотеку jQuery. –

+1

@KyleB. Учитывая, что вопрос был помечен jQuery и использует код стиля jQuery, я предположил, что это было очевидно :) –

+0

Очевидно, мне нужны мои очки, потому что я пропустил это. Хорошая точка зрения. –

0

Один из подходов будет использовать селектор ребенка в сочетании с селектором CheckBox, и итерация, используя каждую функцию в JQuery чтобы выполнить то, что вы ищете.

Имейте в виду, что это не проверено, поэтому, вероятно, это вызовет ошибки, и я надеюсь, что вы это исправите. Под слайдом вверх эффект, вы хотите что-то вроде следующий:

$('.transfer_details > input:checkbox').each(function() { 
(this).checked = false; 
}); 

Надеется, что это помогает и счастливым кодированию!

Смежные вопросы