2017-08-09 24 views
0

を確認している場合、私はJavascriptで非常に良いではないので、私は次のように助けをお願いしたいと思います: 私はドンので、PHPのコードによって生成された複数の無線基を有するフォームを、(、持っています名前がわかるか、どれくらい表示されるかわかります)、選択されているかどうかを確認する必要があります。 回答していない質問をユーザーに表示したい(アラートメッセージは表示されませんが、テキスト形式または質問の文字が赤色になる可能性があります)。チェック複数のラジオボタンを

私はこの問題をグーグルで試してみたが、以前の回答のどれも私の場合には使用することをおなかったです。ここで

私のコードは、これまでのところです:

function formCheck(formID) { 
 
var eLabel=document.getElementById(formID).getElementsByTagName("label"); 
 
var radionames=[]; 
 
var eInput=document.getElementById(formID).getElementsByTagName("input"); 
 
var checker=true; 
 
for (var i=0; i<eInput.length; i++) { 
 
\t if (eInput[i].checked) { 
 
\t \t radionames.push(eInput[i].name); 
 
\t } 
 
} 
 
for (var i=0; i<eInput.length; i++) { 
 
\t for (var j=0; j<radionames.length; j++) { 
 
\t \t if (eInput[i]==radionames[j]) { 
 
\t \t checker=true; 
 
\t \t } 
 
\t \t else { 
 
\t \t alert(); 
 
\t \t checker=false; 
 
\t \t } 
 
\t } 
 
} 
 
return checker; 
 

 
}
<form method="post" action="something.php" id="form1" name="form1"> 
 
<div class="que">que 1</div> 
 
<div class="answ"><label><input name="2" value="7" type="radio">Answer 1</label></div> 
 
<div class="answ"><label><input name="2" value="5" type="radio">Answer 2</label></div> 
 
<div class="answ"><label><input name="2" value="8" type="radio">Answer 3</label></div> 
 
<div class="answ"><label><input name="2" value="6" type="radio">Answer 4</label></div> 
 
<div class="que">que 2</div> 
 
<div class="answ"><label><input name="1" value="4" type="radio">Answer 1</label></div> 
 
<div class="answ"><label><input name="1" value="1" type="radio">Answer 2</label></div> 
 
<div class="answ"><label><input name="1" value="2" type="radio">Answer 3</label></div> 
 
<div class="answ"><label><input name="1" value="3" type="radio">Answer 4</label></div> 
 

 
<input class="submit_button" value="Submit the form" onclick="return formCheck('form1');" type="submit"> 
 
</form>

私がチェックし、入力「グループ」の名前の配列を作成し、すべての入力グループ名にそれを比較したかったです..残りのものはエラーを表示します(赤いテキスト、メッセージ、重要ではありません)。 問題は、これは良い方法ではない場合、私はいずれかに開いている ...このコードは実際に私が見ることができる何かを、そして私がチェックは何も持っていない場合でもsomething.phpを示していないです提案。

(私はjQueryのを使用したくない、とコードがあまりにも古いブラウザ上で実行する必要があります。)私の英語のための

申し訳ありませんが、それは事前にあなたの助けのための& おかげで私の母国語ではありません!

A. JavaScriptでループする第二に

答えて

0

使用の行:

IF(eInput [I] .VALUE == radionames [J]){

代わりに:もし(eInput [I] == radionames [J]){

[i]は

+0

のグループからnameをフィルタリングおかげで、それは "eInput [I] .nameの== radionames [J]" でした。しかし、コードはまだ動作しません。 – AyumiY

+0

(必須のラジオボタンをすべてチェックしていなくても投稿します) – AyumiY

+0

for(var j = 0; j

0

あなたはすべての入力を取得するdocument.querySelectorAllを使用することができますあなたは本当にeInputの値を取得する必要があります。また、入力の種類を渡すことで微調整することもできます。そして、ラジオボタン

function getCheckedButton() { 
 
    var tempNames = []; 
 
    // get all radio button and loop through it to get it's name. 
 
    // use a tempArray to keep unique names 
 
    var radios = document.querySelectorAll('input').forEach(function(item) { 
 
    // if the name is not present then and only then adding name to the array 
 
    if (tempNames.indexOf(item.name) === -1) { 
 
     tempNames.push(item.name) 
 
    } 
 
    }) 
 
    // now looping through temp array 
 
    for (var i = 0; i < tempNames.length; i++) { 
 
    // using the name to select the radio button group to check if any of radio 
 
    // button in this group is checked or not 
 
    // if not checked then it will give null 
 
    if (document.querySelector('input[name="' + tempNames[i] + '"]:checked') !== null) { 
 
     console.log(document.querySelector('input[name="' + tempNames[i] + '"]:checked').value) 
 
    } else { 
 
     console.log("Radio button of group value " + tempNames[i] + " is unchecked") 
 

 
    } 
 

 
    } 
 
}
<div class="que"> 
 
    que 1</div> 
 
<div class="answ"> 
 
    <label> 
 
    <input name="2" value="7" type="radio">Answer 1</label> 
 
</div> 
 
<div class="answ"> 
 
    <label> 
 
    <input name="2" value="5" type="radio">Answer 2</label> 
 
</div> 
 
<div class="answ"> 
 
    <label> 
 
    <input name="2" value="8" type="radio">Answer 3</label> 
 
</div> 
 
<div class="answ"> 
 
    <label> 
 
    <input name="2" value="6" type="radio">Answer 4</label> 
 
</div> 
 
<div class="que">que 2</div> 
 
<div class="answ"> 
 
    <label> 
 
    <input name="1" value="4" type="radio">Answer 1</label> 
 
</div> 
 
<div class="answ"> 
 
    <label> 
 
    <input name="1" value="1" type="radio">Answer 2</label> 
 
</div> 
 
<div class="answ"> 
 
    <label> 
 
    <input name="1" value="2" type="radio">Answer 3</label> 
 
</div> 
 
<div class="answ"> 
 
    <label> 
 
    <input name="1" value="3" type="radio">Answer 4</label> 
 
</div> 
 
<button onclick="getCheckedButton()">Get checked buttons</button>

+0

ありがとうございますが、console.logはすべてのブラウザでサポートされていないと聞いています。 (https://stackoverflow.com/questions/14086675/which-browsers-support-console-log)...なぜ私はENTERを使用することはできません...とにかく私のユーザーは古いブラウザでコードを使用できる必要がありますあまりにも(2013年のような非常に古いかもしれない..) – AyumiY

関連する問題