JavaScriptは奇数のラジオボタンでチェックされています

ユーザーがページ上のラジオ・オプションを強制的に選択しようとしていますが、ユーザーが「いいえ」オプションをチェックすると、チェックされた値が 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
0
jsfiddle.net の例で何が動作していないかを教えてください。
追加された 著者 xdazz,

6 答え

同じ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
1
追加された

どちらの入力も "long"というIDを持っているので、getElementByIdがおそらく最初の「Yes」ボタンを返しています。

1
追加された

2つの要素に同じ "id"値を与えることはできません。 .getElementsByName()を使用して、ラジオボタンのセットを検索し、チェックされたものを探したり、2つの異なる "id"値を与えたりすることができます。

<input name='long' id='long_yes' type='radio' value='Yes'>Yes
<input name='long' id='long_no' type='radio' value='No'>No
1
追加された

IDはHTML仕様に従って一意でなければなりません。したがって、コードは書かれたとおりに動作しません。

FORMアプローチから見ると、ラジオボタンは配列です:

var radios = document.form1.long
for(var x=0;x

YESが配列の最初の要素であるため、このようにYESが選択されているかどうかを確認できます。

var radios = document.form1.long
if(radios[0].checked) { ... } 
1
追加された

両方のラジオボタンは同じIDを持つので、getElementById呼び出しから最初のものだけが取得されます。

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/

0
追加された

あなたは両方のラジオボタンに同じ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
0
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript