JQuery - получение проверенных значений любого набора флажков - PullRequest
1 голос
/ 24 августа 2010

Я хотел бы определить наиболее эффективный способ (с использованием jquery или dom), чтобы получить значение набора флажков, если у вас есть один из них.

Это должно быть общим, когда флажок ввода является частью формы. Однако безопасен ли этот x-браузер, как сделать это более эффективно и что, если флажок не является частью формы?

function (domCheckboxElm) {
    var result = $.map($(domCheckboxElm.form.elements[domCheckboxElm.name]).filter(":checked"), function(e) {
        return $(e).val();
    });
    return result;
}

Edit:

Как примечание, производительность здесь очень важна. Этот алгоритм необходим для форм с несколькими входными элементами и для форм с тысячами. И многие из моих пользователей имеют очень старые компьютеры ('02, '04, '05).

Ответы [ 2 ]

1 голос
/ 24 августа 2010

Прежде всего: Выберите значения группы флажков с помощью jQuery

Производительность действительно не должна быть проблемой, если у вас нет тысяч флажков, которые нужно пройти за один проход.Лучше всего было бы инкапсулировать флажки в div или другом родительском объекте DOM, которые затем можно использовать в jQuery для ограничения поиска в DOM:

HTML

<div id="checkboxDiv">
  <input type="checkbox" name="sample" value="isAPerson"  />       
  <input type="checkbox" name="sample" value="isADog"  />
  <input type="checkbox" name="sample" value="isACat"  />
</div>

jQuery

var checkBoxArray=[];
$("#checkboxDiv input:checkbox").each(function(){
    checkBoxArray.push([$(this).attr("value"),$(this).attr("checked")]);
});

Вот практический пример (при условии, что вы уже включили jQuery):

<script type="text/javascript">

 $("#checkboxDiv input:checkbox").click(function(){
    var checkBoxArray=[];
    $("#checkboxDiv input:checkbox").each(function(){
        checkBoxArray.push([$(this).attr("value"),$(this).attr("checked")]);
    });
     $("#disp").empty().append(function(){
            var outputStr="";
            for (a in checkBoxArray){
                outputStr+=checkBoxArray[a][0]+": "+checkBoxArray[a][1]+"<br/>";
            }
            return outputStr;
         });
    });
</script>

Затем в теле:

<div id="checkboxDiv">
  <input type="checkbox" name="sample" value="isAPerson"  />       
  <input type="checkbox" name="sample" value="isADog"  />
  <input type="checkbox" name="sample" value="isACat"  />
</div>

<div id="disp"></div>
0 голосов
/ 31 августа 2010

Я думаю, что решение, которое я должен был бы найти, - это то, что я предложил с резервным вариантом общего "input:checkbox[name=" + elm.attr("name") + "]", если элемент не является частью формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...