ユーザーがページ上のラジオ・オプションを強制的に選択しようとしていますが、ユーザーが「いいえ」オプションをチェックすると、チェックされた値が false になります。
false
var long = document.getElementById('long'); if(long.checked == false){ message += '- Please select your stance\\r\\n'; errors = true; } <input name='long' id='long' type='radio' value='Yes' >Yes <input name='long' id='long' type='radio' value='No' >No
同じIDプロパティを持つ2つのチェックボックスを持つことはできません。彼らにそれぞれ異なるIDを与え、それは適切に動作するはずです。
var long = document.getElementById('longNo'); if(long.checked == false){ message += '- Please select your stance\\r\\n'; errors = true; } <input name='long' id='longYes' type='radio' value='Yes' >Yes <input name='long' id='longNo' type='radio' value='No' >No
どちらの入力も "long"というIDを持っているので、getElementByIdがおそらく最初の「Yes」ボタンを返しています。
2つの要素に同じ "id"値を与えることはできません。 .getElementsByName()を使用して、ラジオボタンのセットを検索し、チェックされたものを探したり、2つの異なる "id"値を与えたりすることができます。
.getElementsByName()
<input name='long' id='long_yes' type='radio' value='Yes'>Yes <input name='long' id='long_no' type='radio' value='No'>No
IDはHTML仕様に従って一意でなければなりません。したがって、コードは書かれたとおりに動作しません。
FORMアプローチから見ると、ラジオボタンは配列です:
var radios = document.form1.long for(var x=0;x
YESが配列の最初の要素であるため、このようにYESが選択されているかどうかを確認できます。
var radios = document.form1.long if(radios[0].checked) { ... }
両方のラジオボタンは同じIDを持つので、getElementById呼び出しから最初のものだけが取得されます。
document.getElementsByName( "long")を使用するようにコードを変更し、ループオーバーしてそれぞれをチェックします。
document.getElementsByName( "long")
var long = document.getElementsByName('long'), message = ""; var checked = false; for (var i = 0; i < long.length; i++) { if (long[i].checked) { checked = true; } } if(!checked){ message += '- Please select your stance\\r\\n'; alert(message); }
With none checked - http://jsfiddle.net/myFhm/ With no checked - http://jsfiddle.net/myFhm/1/
あなたは両方のラジオボタンに同じIDを持っていますが、名前は同じままにする必要がありますが、異なるIDを持つ必要があります
これを試して:
var longYes = document.getElementById('longYes'); var longNo = document.getElementById('longNo'); if(longYes.checked == false && longNo.checked == false){ message += '- Please select your stance\\r\\n'; errors = true; } <input name='long' id='longYes' type='radio' value='Yes' >Yes <input name='long' id='longNo' type='radio' value='No' >No
日本人コミュニティのjavascript