2011-02-07 14 views
0

私はそれでラジオボタンの可変数を持つフォームがあります。JSラジオ検証

<input id='create' name="post[]" type="radio" value="<? echo $newphrase; ?>" /> 

を私は、少なくとも1つのボタンが選択されていることを確認し、それを検証したいです。私はこのコードを持っています:

function valbutton(thisform) { 
myOption = -1; 
for (i=thisform.post.length-1; i > -1; i--) { 
if (thisform.post[i].checked) { 
myOption = i; i = -1; 
} 
} 
if (myOption == -1) { 
alert("You must select a radio button"); 
return false; 
} 
alert("You selected button number " + myOption 
+ " which has a value of " 
+ thisform.myradiobutton[myOption].value); 
thisform.submit(); // this line submits the form after validation 
}    

これは検証のために働きますが、$ _POST値は設定されていません。 理論的には、この行:

for (i=thisform.post.length-1; i > -1; i--) { 
if (thisform.post[i].checked) { 

は次のように読んでください:

for (i=thisform.post[].length-1; i > -1; i--) { 
if (thisform.post[][i].checked) { 

しかし、それは明らかにそれエラーとして仕事をdoens't。

+0

"少なくとも1つのボタンが選択されていることを確認するために検証したいと思います。"本当に、最初に明示的に選択されたラジオボタンでラジオボタンを提供する必要があります。そして、ユーザーが選択されていない状態にすることはできません。 (「チェックされていない」がない場合、デフォルトでブラウザを選択してブラウザに依存しないでください;この場合の動作は未定義です)。 –

+0

答えに感謝します。問題は、Foreachループの一部であり、0個のラジオボタンがある可能性がありますが、私はあなたの考えをさらに調査します。 – BobFlemming

答えて

1

を使用することです。ボタンの数が変わっても、最後に生成されたボタンをチェックするだけで十分です。

0

ラジオボタンの配列に配列の構文(name = "post []")を使用する理由がわかりません。チェックされたラジオボタンの値だけをサーバーに戻すことは、今までになくてはなりません。

(任意の組み合わせがチェックされる可能性がありますチェックボックスの束については、それが理にかなっている。)

名のラジオボタンで=「POST」、そしてあなたのPHPの$ _POST [「ポスト」]、うまくいくはずです。私はそれがあなたのJavascriptの問題を解決するだろうと思う。

+0

これはループの一部なので、0から無限大の任意の数のラジオボタンがあり、任意の数を選択できます。あなたが言うように、それはちょうどname = "post"で動作しますが、それは悲しいことです。 – BobFlemming

+0

「任意の番号を選択できます。名前を共有するときに複数のラジオボタンが選択されている(つまり、すべて同じセットに入っている)のをどのようにして取得しているのか混乱しています。私が理解できるチェックボックス、ラジオボタンはありません。 –

+0

私は、そのものには何も含まれていないことを意味します。ごめんなさい。 – BobFlemming

関連する問題