2013-04-04 4 views
0

У меня есть код ASP, который представляет любое место из 1-любого количества флажков (которые называются одинаковыми) на странице. Эта проверка работает, однако я думаю, что его немного слаб:проверять динамическое количество флажков с помощью javascript

if (document.getElementById('selectedDocs').checked) 
    { 
     //this is here to handle the situation where there is only one checkbox being displayed 
    } 
    else 
    { 
     var checked = false; 
    var field = myForm.selectedDocs; 
    for(var j = 0; j < field.length; j++) 
    { 
    if(field[j].checked == true) 
    { 
     checked = true; 
     break; 
    } 
    } 
    if(!checked) 
    { 
    alert("You have not ticked any options. At least one must be selected to proceed!") 
    return false; 
    }  
} 

Я работал с кодом в блоке еще, но это работает только, когда есть больше чем один флажок. Он игнорирует тот факт, что я пометил один единственный параметр, когда есть только один. Поэтому я поместил код в раздел if. Хотя он немного взломает, может ли кто-то улучшить его для меня?

Поблагодарив вас ...

ответ

0

Использование:

var field = myForm.getElementsByName('selectedDocs'); 

Это всегда возвращает NodeList, что вы можете перебора.

0

Если они находятся в форме и имеют одно и то же имя, к ним можно получить доступ как коллекцию, которая является свойством формы. Поэтому, учитывая:

<form id="f0" ...> 
    <input type="checkbox" name="cb0" ...> 
    <input type="checkbox" name="cb0" ...> 
    <input type="checkbox" name="cb0" ...> 
    ... 
</form> 

Все следующее возвращает ссылку на форму:

var form = document.getElementById('f0'); 

var form = document.forms['f0']; 

var form = document.forms[0]; // if first form in document 

и и все последующие возвращает коллекцию флажков с именем "cB0":

var checkboxes = form.cb0 

var checkboxes = form['cb0']; 

var checkboxes = form.elements.['cb0']; 
+0

HI RobG благодарит за ваше объяснение, вы, вероятно, можете сказать, что мой JS довольно простой. Поскольку я сказал, что у меня есть работы, я искал мнение о том, насколько эффективен мой рабочий код и какие предложения по улучшению. У вас есть мнение/желание помочь в этом? – Mat41

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