2015-05-11 4 views
0

Я пытаюсь найти значение проверенного переключателя. Я конкатенация переменной 'flagName' в селектор ввода, и он продолжает возвращать неопределенные. Вот мой JQuery:Переключить переменную в переключатель переключателя

function filterProjects (searchInput) { 

var filter = $(searchInput).val(), count = 0; 
var $projects = $(".ProjectDisplay"); 
$projects.show(); 
$projects.each(function() { 
    var $currentProject = $(this); 
    var projectFlags = $(this).data(); 

    for (var flagName in projectFlags) { 
    var flagValue = projectFlags[flagName]; 
    var checkedInputValue = $("input[name='" + flagName + "']:checked", "#flagSearchForm").val(); 

    if ((checkedInputValue == "yes" && flagValue == "0") || (checkedInputValue == "no" && flagValue == "1")) { 
     $currentProject.hide(); 
    } 
    } 

    if ($(this).find(".projectName").text().search(new RegExp(filter, "i")) < 0) { 
    $(this).hide(); 
    } 
}); 

}

Я пытаюсь найти значение checkedInputValue. flagName и flagValue возвращают то, что они предполагают. В HTML у меня есть форма, которая проходит через массив PHP для создания нескольких полей, каждый из которых имеет по три переключателя. Вот часть моего HTML, где форма:

<form id="flagSearchForm" name="flagForm"> 
<div class="grid-unit grid-unit-9-14"> 
    <h4>Search by Flag Value</h4> 
    <div class="flagSearch"> 
    <div class="wrapper grids"> 
    <?php 
    $flag_names = array("hasBib", "hasChoice", "hasEbooks", "hasFrbr", "hasLcd","hasLtp", "hasNlm", "hasPeers", "includeDewey", "includeGovtDocs", "includeNonBooks", "includeOpacUrl", "includeProtection", "includeScores"); ?> 

    <?php foreach ($flag_names as $i=>$flag_name): 
    ?> 
    <div class="flagfields"> 
     <div class="grid-unit grid-unit-3-14"> 
     <fieldset> 
      <span class="flagName"><?php echo $flag_name; ?></span> 
      <input type="button" value="N/A" class="tri-state ignore" id="<?php echo $flag_name; ?>"/> 
      <input type="radio" name="<?php echo $flag_name; ?>" value="ignore" id="<?php echo $flag_name; ?>-ignore" class="radio-button" checked><label for="<?php echo $flag_name; ?>-ignore">Ignore</label> 
      <input type="radio" name="<?php echo $flag_name; ?>" value="yes" id="<?php echo $flag_name; ?>-yes" class="radio-button"><label for="<?php echo $flag_name; ?>-yes">Yes</label> 
      <input type="radio" name="<?php echo $flag_name; ?>" value="no" id="<?php echo $flag_name; ?>-no" class="radio-button"><label for="<?php echo $flag_name; ?>-no">No</label> 
     </fieldset> 
     </div> 
    </div> 
    <?php 
    endforeach; 
    ?> 
    </div> 
    </div> 
<input type="submit" value="submit" class="flagSearchSubmit"> 
</div> 

Является ли мой синтаксис checkedInputValue неправильно?

+0

Как filterProjects() вызывается? . – Chizzle

+0

'$ ("# searchProjects") KeyUp (функция() { filterProjects ($ (это)); });.' '$ ("# flagSearchForm") представить (функция (событие) { event.preventDefault(); filterProjects ($ ("# searchProjects")); }); ' – Whitney

+0

^Извините за форматирование. Но я вызываю filterProjects(), когда кто-то вводит в панель поиска или представляет форму. – Whitney

ответ

0

Я не уверен, что ваш фильтр/регулярное выражение было так, что нужно будет выполнить. Это регистрирует все выбранные входы.

Вот скрипку: https://jsfiddle.net/c4qbywrt/7/

function filterProjects(searchInput) { 

    $('input:radio').each(function() { 
     if ($(this).is(':checked')) { 

      var $currentProject = $(this); 
      var checkedInputValue = $(this).val(); 
      var flagValue = '0'; // Not sure what is setting this 
      if ((checkedInputValue == "yes" && flagValue == "0") || (checkedInputValue == "no" && flagValue == "1")) { 
       $currentProject.hide(); 
      } 
      var filter = ''; 
      if ($(this).find(".projectName").text().search(new RegExp(filter, "i")) < 0) { 
       $(this).hide(); 
      } 
     } 
    }); 
} 

$("#searchProjects").keyup(function() { 
    filterProjects($(this)); 
}); 
$("#flagSearchForm").submit(function (event) { 
    event.preventDefault(); 
    filterProjects($("#searchProjects")); 
}); 
+0

Спасибо, что нашли время ответить. Я подключил этот код, и checkedInputValue по-прежнему возвращался не определен. Спасибо, что нашли время. – Whitney

+0

Это может помочь, если бы у нас был полный блок html для работы вместо PHP-кода. – Chizzle

+0

Проверьте обновленную ссылку, ссылка у меня была неправильная js. Это регистрирует выбранное значение. Не уверен, что все остальное делает ваш код. – Chizzle

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