2010-07-09 2 views
4

У меня есть несколько флажков и другой флажок «Select All»проверка Checkbox - по крайней мере, один выбранный

Я хочу, чтобы проверить, если пользователь выбрал хотя бы один флажок. Необходимость изменения в JavaScript

<script language="Javascript"> 

function doSubmit(){ 
function check_checkboxes() 
{ 
checked=false; 
var c = document.getElementsByTagName('INPUT'); 
for (var i = 1; i < c.length; i++) 
{ 
    if (c[i].type == 'checkbox') 
    { 
    if (c[i].checked) { 
    return true} 
    else {alert("Please identify what warehouses comply:"); } 
     } 
    } //if I place my struts action here..its not working? 
}  
document.holiDay.command.value= 'addingApp'; //My Struts action if something checked. 
document.holiDay.submit(); 
}  
+1

Пожалуйста, разместите HTML-код для своих флажков. –

+0

Похоже, вы нашли ответ (http://stackoverflow.com/questions/3507117/merge-two-javascripts) - возможно, вы можете принять здесь ответы. – palswim

ответ

4
var all=document.getElementById('holiDay'); 

В HTML идентификаторы должны быть уникальными, так getElementById будет возвращать только 1 элемент. Возможно, вы можете попробовать getElementsByTagName - http://msdn.microsoft.com/en-us/library/ms536439(VS.85).aspx?

Что-то вроде ...

function check_checkboxes() 
{ 
    var c = document.getElementsByTagName('input'); 
    for (var i = 0; i < c.length; i++) 
    { 
    if (c[i].type == 'checkbox') 
    { 
     if (c[i].checked) {return true} 
    } 
    } 
    return false; 
} 

и изменить функцию Validate к ...

function Validate() 
{ 
    if(!check_checkboxes()) 
    { 
     alert("Please identify what warehouses comply:"); 
     return false; 
    } 
    return true; 
} 
+0

Не работает. Когда я нажимаю кнопку «Отправить», она даже не входит в цикл. [код] <сценарий языка = "Javascript"> функция doSubmit() { \t функция check_checkboxes() \t { \t проверил = ложь; \t var c = document.getElementsByTagName ('INPUT'); \t для (вар я = 1; г

+0

Хорошо, Ive добавил больше к моему первоначальному ответу (см. Выше) (Или см. Ответ Джетса - но я думаю, что это зависит от JQuery?) – barrylloyd

+0

Я знаю, что это старый пост, но я был глядя на него, и у меня есть быстрый вопрос (больше похоже на синтаксис javascript, который я предполагаю), когда вы пишете 'if (c [i] .check) {return true}', не выйдет из цикла for и не продолжит с проверкой остальной части блока checkbox? – de1337ed

0
(function() { 
    for(x in $ = document.getElementsByTagName("input")) 
    with($[x]) 
    return (type == "checkbox" ? checked == true : 0) 
}) 
+0

Пожалуйста, не используйте 'with', или, что еще хуже, предложите его использовать другим. –

0

Выберите по крайней мере один флажок с помощью jqQery. Попробуйте следующий код.

$('input[type="checkbox"][name="class"]').on('change', function() { 
    var getArrVal = $('input[type="checkbox"][name="class"]:checked').map(function() { 
     return this.value; 
    }).toArray(); 

    if (getArrVal.length) { 
     //execute the code 
    } else { 
     $(this).prop("checked", true); 
     alert("Select at least one column"); 
     return false; 
    } 
    ; 
}); 
Смежные вопросы