2011-10-08 6 views
0

なぜPHPフォーム入力配列がjQueryで面白いのですか?jQueryでPHPのフォーム配列が異常に/(予期せず)動作する理由

これを解決する方法はありますか? に21個のラジオ入力のフォームを更新

こんにちは、私はこのコードを書き、それが動作する... は、次のチェックをラジオ(複数可)にラベルを強調する。

*視覚的に - ここではないhtmlタグのように

$(function() 
{  
for(count = 0;count<21;count++) 
{ 
    result = $("input:radio[name=choice"+count+"]:checked").val(); 
    $("input[name=\"choice"+count+"\"][ value=\""+ result +"\"]").attr("class", "magic"); 
    $("div.radio:has(input.magic)").attr("class", "radio spell"); 
} 
$("input").click(function() 
{ 
    $("div.radio:has(input.magic)").attr("class", "radio"); 
    $("input.magic").removeAttr("class", "magic"); 

    var count = 0; 
    var result = 0; 
    for(count = 0;count<21;count++) 
    { 
     result = $("input:radio[name=choice"+count+"]:checked").val(); 
     $("input[name=\"choice"+count+"\"][ value=\""+ result +"\"]").attr("class", "magic"); 
     $("div.radio:has(input.magic)").attr("class", "radio spell"); 
    } 
}); 
}); 

はCSS

input[type="radio"] { 
height: 20px; 
} 

input[type="radio"] + label { 
color: #777; 
font-weight:100; 
letter-spacing: 1px; 
} 

input[type="radio"].magic + label { 
color: black; 
font-style: italic; 
/*text-decoration:underline;*/ 
font-weight: 600; 
letter-spacing: 0px; 
text-align: center; 
display:inline-block; 
width: 80px; 
} 

div.radio.spell { 
border: outset white 2px; 
} 

で今使用される無線名前はchoice0ある - choice20 そして、それは大丈夫動作します。

これまで私は選択肢[0] - 選択肢[20]を使用しました。 それはまったく動作しませんでした。 それは非常に奇妙な動作をしました。

jQueryコードは、 result = $( "入力: ...

私は不思議に思っています。

ありがとうございます。

+0

$(function() { $(":radio[name^=choice]:checked").each(function() { $(this).closest('div.radio').attr("class", "radio spell") .find("input[name^=choice]").attr("class", "magic"); }); }); 

などだけで正常に動作し、自分のためのhttpを参照してください:// jsfiddle。 net/MqQh4/ –

+0

これを行うと、もう1つの配列が作成されました。これに応じてAjaxを変更しましたか? – Melsi

答えて

3

[および]は、jQueryの属性セレクタに使用されます。文字列の一部として使用するには、エスケープする必要があります。$(":radio[name=choice\["+count+"\]]")

つまり、これは要素グループを操作するにはやや不快な方法です。簡単な方法は、これらのグループを反映したHTML構造を作成し、グループの他のメンバーを見つけるためにそれを使用することです: