2012-11-05 3 views
0

jQuery를 사용하여 양식 유효성을 검사하고 싶습니다. 라디오 버튼 그룹이 있습니다.제출시 jQuery로 라디오 버튼 확인

단일 그룹의 라디오 버튼 또는 솔루션에 대해 여러 가지 솔루션을 발견했습니다. 여기서 그룹 이름이 무엇인지 구체적으로 말해야합니다.

여기처럼 : Validate radio buttons with jquery?

문제는 양식이 실행시에 생성되고 있다는 것이다. 질문은 txt 파일에 저장됩니다 (묻지 마십시오, 학교 운동입니다). 생성 된 HTML 코드는 다음과 같은 :

<p>What&#039;s your gender? 

<input type="radio" name="gender" value="m" />Male 
<input type="radio" name="gender" value="f" />Female 

</p> 

<p> 

How satisfied are you with out support? 
<input type="radio" name="satisfaction" value="0%" />Not at all 
<input type="radio" name="satisfaction" value="25%" />Not very much 
<input type="radio" name="satisfaction" value="75%" />It was ok 
<input type="radio" name="satisfaction" value="100% />It was very satisfying 

</p> 

JS 파일은 모든 라디오 버튼 그룹을 통해 루프 가능할 것이다, 그래서 나뭇 가지를 사용하여 생성되고,하지만이 있다면 나는이를 방지하고자 가능한.

+0

각 그룹을 반복하는 것보다 훨씬 잘 수행 할 수는 없습니다. –

+0

적어도 jquery 코드를 생성하는 대신 모든 그룹 이름을 jquery에서 직접 가져올 수는 없습니까? 그래서 jQuery에서 직접 foreach를 할 수 있습니다. 귀하의 노력에 감사드립니다 – NSAddict

답변

1
그런 다음, (페이지로드가 잘 될 수 있지만 그룹의 배열이 전역 범위에 있는지 확인하십시오 것입니다) 먼저 모든 그룹을 추가 개별적으로 양식이 제출 될 때 각 그룹의 유효성을 검사해야

/버튼을 클릭

var groups = []; 
$(function() { 
    $("input[type=radio][name]").each(function() { 
     // Add the unique group name to the array 
     groups[$(this).attr("name")] = true; 
    }); 
}); 
$("button").click(function() { 
    $.each(groups, function(i, o) { 
     // For each group, check at least one is checked 
     var isValid = $("input[name='"+i+"']:checked").length; 
     alert(i + ": " + isValid); 
    }); 
}); 
+0

그룹은 양식을 제출할 때 빈 배열입니다. 그러나 기능이 실행되고 있습니다. 왜 그런가? 각 블록도 작동합니다. – NSAddict

+0

알겠습니다. 고마워요. – NSAddict

0

가 나는 Blade0rz이

var groups = []; 
$(function() { 
    $("input[type=radio][name]").each(function() { 
     // Add the unique group name to the array 
     if (groups[groups.length - 1] != $(this).attr("name")) groups.push($(this).attr("name")); 
    }); 
}); 
$('form').submit(function() { 
    var isValid = true; 

    $.each(groups, function(i, o) { 
     // For each group, check at least one is checked 
     if (isValid) isValid = $("input[name='"+o+"']:checked").length; 
    }); 

    if (!isValid) return false; 

    return true; 
}); 

감사처럼 작동있어!