0

私はここでかなり厄介な問題を抱えています!

私は<ul>すべてに入力のグループを持ってい<li>ます。すべてのリスト要素にラジオボタンがあり、それらをグループ化して、クリックしたときに切り替えられるようにします。

問題は、ラジオが接続されないことです!そのうちの2つをクリックすると、両方がチェックされます。

コードは次のとおりです:http://jsfiddle.net/bakaburg1/Djq5q/1/

注意:これはワードプレスのカスタムフィールドのコードです。

どうもありがとう!

編集1:すべてのリスト要素のフィールドが接続されたままであることが重要です。これにより、PHP側で次のようなデータ構造を取得できます。

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

EDIT2:当分の間私はいくつかのjQueryで問題にパッチを当てました:

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

ただし、最も洗練された解決策がわからない場合は、このスニペットにもコメントしてください(回答しないでください)。

EDIT3:フィールドに3つの異なる名前を付け、POSTされたデータを1つの配列にマージして、シリアル化してデータベースに保存することで、問題を解決しました。

<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>

ただし、別の問題が発生しました...テキスト入力フィールドのバックエンドにPOSTされたデータは、すべてのフィールドに値があり、空のフィールドもある秩序だった配列ですが、ラジオボタンは1つの値しか送信しないため、わかりません。ウィッチリスト要素のウィッチラジオがチェックされていますが、これについて何か助けはありますか?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:リストを変更するすべてのアクション(要素の並べ替え、追加、削除)のラジオボタンに増分数値を割り当てるJavaScriptを使用して問題にパッチを適用しました。あまりきれいではありませんが。

4

3 に答える 3

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の名前です。これらすべてのラジオボタンに同じ名前を付けます(各グループの名前は同じである必要があります)。そうすると、ボタンが切り替わります。

于 2012-08-02T12:45:35.467 に答える
1

ラジオボタンをグループ化するには、name属性に同じ値を指定する必要があります。

元。(W3Schoolsから)

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

編集: あなたが提供したjsFiddleリンクで計画していた順序を維持するために、1つのリストアイテムに対して反復ステートメントを作成することをお勧めします:(間違ったphpコードで申し訳ありませんが、私は長い間それを使用していません)

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>
}
于 2012-08-02T12:48:35.377 に答える
1

何らかの理由で属性を使用できない場合name(たとえば、名前属性が動的に入力されている場合は、そうだと思います)、jQueryを使用してチェックボックスを切り替えることができます。

$(document).ready(function() {
    $('input[type="radio"]').click(function() {
      $('input[type="radio"]').prop('checked', false);
      $(this).prop('checked', true);        
    });        
});
于 2012-08-02T12:57:50.930 に答える