2011-08-03 1 views
3

라디오 버튼과 제출 버튼 만 포함 된 여러 HTML 양식을 만들었습니다. 그러나, 나는 서로를 독립적으로 - 올바르게 검증 할 수는 없습니다. 폼Javascript와 Jquery를 사용하여 PHP 루프를 통해 생성 된 각 간단한 HTML 라디오 양식을 개별적으로 확인하는 방법

PHP/HTML 코드 : 여기 내 코드는 다음

<table> 
<?php 
for($i=0; $i<count($array1); $i++) 
{ 
    $number = $i + 1; 
    echo "<TR><TD>; 
    echo "<form name='move' action='listChange_controller.php' method='POST'>Title:<br/> 
     <input type='radio' name='change".$number."' value = 'val1' />Thing1 
     <input type='radio' name='change".$number."' value = 'val2'/>Thing2 
     <input type='radio' name='change".$number."' value = 'val3'/>Thing3 
     <input type='button' name='submit' value='submit' onClick='validate(".$number.");'/>"; 
    echo "</form>"; 
    echo "</TD></TR>"; 
} 
?> 
</table> 

내가 노력 해왔다 자바 스크립트/JQuery와,하지만 작동되지 않았습니다

function validate(number) 
{ 
    var name_var = 'change'+number; 
    if($('input:radio[name=name_var]:checked').length > 0) 
    { 
     $.post('file.php',{ name_var:$('input:radio[name=name_var]:checked').val()}); 
    } 
    else 
    { 
     alert('You must choose'); 
     return false; 
    } 
} 

내가 할 때 이것은 항상 submit 버튼을 누르기 전에 라디오 버튼을 선택하지 않았다고 생각합니다; 그것은 항상 자바 스크립트 함수의 'else'부분을 수행합니다.

내가 왜 작동하지 않는지, 그리고 무엇이 효과가 있는지 알려 주시기 바랍니다. 어떤 도움이나 제안을 부탁드립니다.

답변

5

이 줄 ...

if($('input:radio[name=name_var]:checked').length > 0) 

if($('input:radio[name=' + name_var + ']:checked').length > 0) 
+0

감사를 읽어야합니다! 그랬어. – Marina

+0

문제 없음. 나는 또한 몇 가지를 추가 할 것입니다. 1) 라디오 선택을 사용하는 올바른 방법은 * 기본적으로 선택된 하나의 옵션을 제공하는 것입니다. 다음 (http://stackoverflow.com/questions/3457073/should-one-html-radio-button-in-a-radio-group-always-be-checked)을 참조하십시오. 이는 유효성 확인의 필요성을 전혀 무효화합니다. 2) 마크 업의 이벤트에 함수를 바인딩하지 않는 것이 좋습니다 (http://api.jquery.com/category/events/). 3)

+0

감사합니다. 제공하신 정보는 매우 유용합니다. :) – Marina

2

변경 ...

if($('input:radio[name=name_var]:checked').length > 0) 

에 ...

if ($('input[name=' + name_var + ']').is(':checked')) 
+0

거기에 그것을 ($ ('input : radio [name ='+ name_var + '] : checked'). 길이> 0)로 바꾸는 것 이상의 이점이 있습니까? 감사! – Marina

+0

실제 이점이 없으며 개인적인 취향입니다. 그것은 나에게 깨끗해 보인다. – 65Fbef05

+1

충분히 공정합니다. 이제 코드를 작성하는 여러 가지 방법을 알고 있습니다. 감사합니다. – Marina