2012-08-02 2 views
0

여기에 꽤 불쾌한 문제가 있습니다!목록에있는 라디오 버튼이 그룹화되지 않습니다.

에 입력 그룹이있는 <ul>이 있습니다. 모든 목록 요소에는 라디오 버튼이 있으며이를 그룹화하여 클릭 할 때 토글되도록합니다.

문제는 라디오가 연결되지 않는다는 것입니다. 내가 그 중 두 개를 클릭하면 둘 다 확인됩니다!

여기에 코드입니다 : http://jsfiddle.net/bakaburg1/Djq5q/1/

는주의 사항 : 이것은 워드 프레스 사용자 정의 필드에 대한 코드입니다.

많은 감사!

EDIT1 :

array (
    0 => 
    array (
    'answer' => 'answer1', 
), 
    1 => 
    array (
    'answer' => 'answer2', 
), 
    2 => 
    array (
    'is_right' => 'on', 
    'answer' => 'answer3', 
), 
    3 => 
    array (
    'answer' => 'yiuyiuyiuj', 
), 
) 

EDIT2 : 시간 동안 나는이 문제를 패치되는 그것은 즉, PHP 측에서 내가 같은 데이터 구조를 가지고 있으므로 모든 목록 요소의 필드가 연결 상태를 유지하는 것이 중요합니다 일부 jQuery :

jQuery('.mm_ps_answers input:radio').click(function(){ 
jQuery(this).parents('ul').find('input:radio').not(this).attr('checked', false) 
}) 

가장 세련된 해결책은 확실하지 않지만이 스 니펫에 댓글을 달아주세요 (답변 없음).

EDIT3 : 필드에 세 가지 다른 이름을 지정하고 게시 된 데이터를 하나의 배열에 병합하여 직렬화 한 다음 데이터베이스에 저장하여 문제를 해결했습니다.

<li> 
    <a class="mm_ps_move button"><img src="http://localhost:8888/minimamedicamenta/wp-content/themes/minima/img/move.png"></a> 
    <a class="mm_ps_delete_answer button">Delete Answer</a> 
    <input type="radio" class="mm_ps_is_right" name="mm_ps_answers_is_right[]"> 
    <input type="text" name="mm_ps_answers_input[]" value=""> 
    <input type="hidden" name="mm_ps_answers_impressions[]"> 
    <span class="mm_ps_impressions">impressions: <span>0</span></span> 
</li> 

는 또 다른 문제는 있지만 최대 poped 텍스트 입력 필드의 백 엔드에 게시 된 데이터는 모든 필드의 값과 잘 정렬 된 배열이있는 동안 ... 또한 비어있는의 라디오 버튼 하나만 보내 가치, 그래서 내가 목록에 어떤 라디오 요소가 체크되었습니다 어떤 아이디어가, 이것에 어떤 도움이? 여기 (값은 임의의 문자열)에 3 개 개의 입력에 대한 POST의 데이터 인 것 :

[04-Aug-2012 17:18:45] Line (in): 
array (
    0 => 'cvxcv', 
    1 => 'vs', 
    2 => '', 
    3 => 's', 
) 
[04-Aug-2012 17:18:45] Line (in): 
array (
    0 => 'on', 
) 
[04-Aug-2012 17:18:45] Line (in): 
array (
    0 => '', 
    1 => '', 
    2 => '', 
    3 => '', 
) 

EDIT4 : 나는 수정 모든 행동에 라디오 버튼에 증분 숫자 값을 지정 자바 스크립트와 함께 문제를 패치 목록 (요소 정렬, 추가, 삭제). 별로 깨끗하지는 않지만.

답변

2
<ul class="mm_ps_answers manage_list ui-sortable"> 
<li> 
    <input type="radio" name="SameName"> 
    <input type="text" name="mm_ps_answers[0][answer]" value="jkjhk"> 
    <span class="mm_ps_impressions">impressions: </span> 
</li> 
<li> 
    <input type="radio" name="SameName"> 
    <input type="text" name="mm_ps_answers[1][answer]" value="lknjlk"> 
    <span class="mm_ps_impressions">impressions: </span> 
</li> 
<li> 
    <input type="radio" name="SameName"> 
    <input type="text" name="mm_ps_answers[2][answer]" value="òklkjl"> 
    <span class="mm_ps_impressions">impressions: </span> 
</li> 
<li> 
    <input type="radio" name="SameName"> 
    <input type="text" name="mm_ps_answers[3][answer]" value="p09i0i"> 
    <span class="mm_ps_impressions">impressions: </span> 
</li> 

그들을의 RadioButton의 이름입니다 전환 할 브라우저를 만드는 속성입니다. 모든 라디오 버튼의 이름을 동일하게 지정하고 (각 그룹은 같은 이름이어야 함) 토글합니다.

+0

어떻게 목록 요소의 다른 입력에 해당 항목을 설정합니까? 필자는 작업의 PHP 측면을 위해 잘 구조화 된 배열이 필요하다. jQuery UI에 정렬 가능한 플러그인을 사용하고 있기 때문에 순서가 중요하므로 입력 필드 연결에 일관성있는 시스템이 필요합니다. – Bakaburg

+0

정확히 "목록 요소의 다른 입력과 일치하게"하는 것이 무엇입니까 ?? – Apurav

+0

질문에 수정 사항을 확인하십시오! :) – Bakaburg

1

라디오 버튼을 함께 그룹화하려면 name 속성에 같은 값을 지정해야합니다.

ex.(W3 스쿨에서)

<form action=""> 
<input type="radio" name="sex" value="male" /> Male<br /> 
<input type="radio" name="sex" value="female" /> Female 
</form> 

편집 : 난 당신이 하나 개의 목록에 반복적 성명을 추천 할 것입니다 당신이 제공하는 링크는 jsFiddle에서 계획 된 순서를 유지하려면 항목 : 잘못된 PHP 코드 (죄송하지만, 나는) 그것을 의심하는 - 당신의 이름 속성이 동적으로 채워집니다 (예를 들어, 하나 또는 다른 이유에 대한 name 속성을 사용하는 것이 가능하지 않으면 난

foreach($answer as $value){ 
<li> 
    <input type="radio" name="answer" value="$value[is_right]"> 
    <input type="text" name="$value[answer]" value="jkjhk"> 
    <span class="mm_ps_impressions">impressions: </span> 
</li> 
} 
+0

등으로 의심되는 경우, Apurav에 대한 답변을 참조하십시오. – Bakaburg

+0

일부 변경했습니다. 그것이 당신이 찾고있는 것이기를 바랍니다. – Clayton

+0

고마워, 실제로 목록 항목은 PHP에서 foreach로 생성됩니다 :) – Bakaburg

1

) 오랜 시간에 그것을 사용하지 않은 jQuery를 사용하여 체를 토글 할 수 있습니다. ckboxes :

$(document).ready(function() { 
    $('input[type="radio"]').click(function() { 
     $('input[type="radio"]').prop('checked', false); 
     $(this).prop('checked', true);   
    });   
}); 
+0

나는 문제를 극복하기 위해 동일한 작업을 수행했습니다. 더 우아한 해결책이 있는지 궁금합니다. – Bakaburg

+1

미안하지만 게시하기 전까지 편집을 보지 못했습니다! 'name' 속성을 사용할 수있는 방법이 전혀 없다면 jQuery가 가장 좋은 방법입니다. – billyonecan

관련 문제