2011-11-06 15 views
0

私はチェックボックスがチェックされているかどうかにかかわらず、常に「はい」と評価されているのです。htmlのチェックボックスに問題がある

HTML:

<input type="checkbox" name="email" id="email" value="yes">Yes<br> 
<input type="checkbox" name="email" id="email" value="no" checked >No<br> 

var email = document.getElementById('email').value; 

とPHPによってアクセスされているだけで$_GET [メール]の値を-ingですが、それは常に、それに設定されているものとしてそれを処理します"はい"。

+0

あなたは、すべてのHTML要素のための**ユニーク** IDを持っている必要があります。したがって、あなたは2つのid = "email"を持っているので、これは良くありません。 –

+0

チェックされていないチェックボックスの値は送信されないので、どちらのボックスもチェックされていなければ、PHPでは "yes"または "no"を取得しません。はい/いいえのどちらのオプションも選択できないようにするのは意味がないと思いますが、なぜラジオボタンを使用していないのですか? – nnnnnn

答えて

6

ID属性は一意である必要があり、document.getElementByIdは最初に一致する要素を返すためです。

+0

私はちょうど質問があります。 (document.getElementById( 'email')。checked == true) \t { \t \t var email = document.getElementById( 'email')。値; \t}チェックボックスをチェックすると、処理が遅くなってしまいました。どうして私は不思議です。 – Sam

+0

私はこれがあなたの処理を遅くするのではないかと疑問に思っています。変数 'email'が設定されているので実行する部分がありますか?ところで、チェックボックスを扱うあなたのアプローチは、2つ以上の選択肢に対して非常に効果的ではありません。idを割り当てる代わりに、フォーム要素にIDを割り当て、要素名を入力して 'name'という入力を使ってチェックします。 –

-1

簡単に言うと、チェックボックスです。ラジオボタン(type="radio")は、グループ内の1つのボックスだけを強制的に検査するタイプで、おそらくあなたが望むものです。

1

はい/いいえの回答のみが必要な場合はラジオボタンを使用する必要がありますが、意図的にチェックボックスを使用しましたか?あなたがチェックボックスのために書いたようにラジオボタンのコードは次のようになります。

PHP:

<?PHP 
$selected_radio = $_POST['answer']; 
print $selected_radio; 
?> 

HTML:

<FORM name ="form1" method ="post" action ="radioButton.php"> 
<Input type = 'Radio' Name ='answer' value= 'Yes'>Yes 
<Input type = 'Radio' Name ='answer' value= 'No'>No 
<Input type = "Submit" Name = "Submit1" VALUE = "Select a Radio Button"> 
</FORM> 

をあなたが本当にチェックボックスを使用する場合は、個別のIDを付けて個別に確認してください:

HTML:

<input type="checkbox" name="email" id="email_yes" value="yes">Yes<br> 
<input type="checkbox" name="email" id="email_no" value="no" checked >No<br> 

JS:

var email = (document.getElementById('email_yes').value == 1) 'yes' : 'no';