Javascript и только один флажок - не определено - PullRequest
6 голосов
/ 11 февраля 2009
for (i = 0; i < document.checks.user.length; i++) //for all check boxes
{
    if (document.checks.user[i].checked == true )
    {
        document.checks.submit();
        return 0;
    }
}

<body>
<form action="" method=POST name="checks" ID="Form2">
  I have a bike:
  <input type="checkbox" name="user" value="Bike" ID="Checkbox1">
  <br>
  <br>
</form>
<input type="button" value="Delete" 
    class="btn" onclick="sub_delete()" 
    onmouseover="hov(this, 'btn btnhov')" onmouseout="hov(this, 'btn')" 
    id="Button1" name="Button1" 
/>
</body>

как вы, вероятно, уже знаете, когда остается только один флажок document.checks.user.length = undefined. Какой самый эффективный способ убедиться, что при наличии только одного флажка, он будет удален. Я думал просто подумать, чтобы добавить его как отдельное утверждение if перед утверждением if здесь ... любые предложения.

Спасибо.

Ответы [ 8 ]

8 голосов
/ 11 февраля 2009

Используйте переменную управления циклом и установите ее в 1, если длина не определена ...

var len = document.checks.user.length;
if(len == undefined) len = 1;
for (i = 0; i < len; i++) //for all check boxes

С наилучшими пожеланиями ...

3 голосов
/ 11 февраля 2009
if (document.getElementById('Checkbox1').checked) { /* do something */ }

если вы хотите зациклить несколько флажков, вы можете зациклить поля ввода вашей формы, например:

var formNodes  = document.checks.getElementsByTagName('input');
for (var i=0;i<formNodes.length;i++) {
   /* do something with the name/value/id or checked-state of formNodes[i] */
}
1 голос
/ 17 сентября 2012

Это очень просто, просто создайте скрытый тег ввода с именем, совпадающим с существующим тегом ввода флажка.

Например:

<input type="checkbox" name="user" value="Bike" ID="Checkbox1">
<input type="hidden" name="user" value=""/>
1 голос
/ 29 декабря 2010

Я тоже сталкиваюсь с той же проблемой с 5 флажками, из которых 4 отключены, а 1 включен. Теперь checkboxId.length не определен, поэтому я мог бы подумать только о том, что if (checkboxId.length == undefined) {checkboxId.checked = true & submith формы}.

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

Ваш вопрос несколько сбивает с толку, так как ваш javascript, очевидно, должен был бы быть внутри функции под названием 'sub_delete', чтобы иметь какое-либо применение ... кто-то, обладающий могущественной способностью редактировать вопросы, мог бы улучшить вопрос, сделав это более понятным ...

Итак, первая проблема, которую вам нужно обойти, это то, что для одиночного флажка с заданным именем «пользователь» это не массив, и поэтому он не имеет определенной длины, но также если вы попытаетесь получить к нему доступ как массив .. все запутано .. полное переписывание вашей функции javascript может выглядеть так:

    function sub_delete{
        if (typeof document.checks.user.length === 'undefined') {
   /*then there is just one checkbox with the name 'user' no array*/
        if (document.checks.user.checked == true )
                            {
                                document.checks.submit();
                                return 0;
                            }   
    }else{
  /*then there is several checkboxs with the name 'user' making an array*/
        for(var i = 0, max = document.checks.user.length; i < max; i++){
            if (document.checks.user[i].checked == true )
                            {
                                document.checks.submit();
                                return 0;
                            }

        }
    }
    }//sub_delete end

НТН, -Ft

1 голос
/ 11 февраля 2009
if(document.checks.user[0]) {
  //it's an array
}
else {
  //it's a single element
}
0 голосов
/ 11 февраля 2009

Я бы, вероятно, перебрал бы document.checks.elements в поиске .type == 'checkbox'.

0 голосов
/ 11 февраля 2009

jQuery - ваш друг:

$("input[type='checkbox']").attr('checked', false);

(... если вам доступен jQuery?)

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