2015-04-22 2 views
0

Мой код должен вызывать предупреждение, если переключатель не выбран. Моя проблема в том, что она появляется только если вы выбрали один вопрос. Например, я выбрал ответ в вопросе 1, но не на вопрос 2. Поэтому он дает предупреждение: должен выбрать вопрос номер два! Но моя проблема в том, что, если вы не выберите какой-либо, это ничего не предупреждает меня. Если я ничего не выбрал, он должен появиться, 2 предупреждения, обязательно выберите вопрос номер один, а затем еще одно предупреждение, необходимо выбрать номер вопроса 2! любая помощь будет оценена, спасибо!Всплывающие предупреждающие сообщения в Javascript

<html> 
    <head> 
    <script> 


    function checkAnswers(){ 
    var retval = false; 
    var inputs = document.getElementsByTagName('input'); 
    for(i=0;i<inputs.length;i++){ 

     var inputName = inputs[i].getAttribute('name'); 
    //  var msg = document.getElementById('msg-' + inputName); 
       var checker = document.getElementsByName(inputName); 
       var counter = false; 
       for(j=0;j<checker.length;j++){ 
        if(checker[j].checked == true){ 
        counter = true; 
        i += 4; 
        break; 
        } 
       } 
       if(counter == false){ 
        alert("Must answer question number" + " " + inputName + "!"); 
        retval = false; 
        i += 4; 
       } 
     } 
     return retval; 

} 

    </script> 
    </head> 
    <body> 
    <form name="myForm" onsubmit="return checkAnswers()" id="form"> 
     <h1>QUESTIONS</h1> 
     <h3>Question No. 1.)</h3>What makes you smile?<br /> 
     <input name="one" type="radio" value="yes" />A. Burger<br /> 
     <input name="one" type="radio" value="no" />B. Pizza <br /> 
     <input name="one" type="radio" value="no" />C.Sunrise <br /> 
     <input name="one" type="radio" value="no" />D. Kitkat<br /> 
     <span id="msg-one"></span><br /> 


      <h3>Question No. 2.)</h3>What's your favorite day?<br /> 
     <input name="two" type="radio" value="no" />A. Hi<br /> 
     <input name="two" type="radio" value="yes" />B. Hello<br /> 
     <input name="two" type="radio" value="no" />C. Ahh<br /> 
     <input name="two" type="radio" value="no" />D. Kitkat<br /> 
     <span id="msg-two"></span><br/> 


      <input type="button" name='submit' value="Submit" /><br /> 
      <span id="score"></span><br /> 
    </form> 



    </body> 
    </html> 
+0

Можно ли использовать логические операторы? – Blank

+0

попробовал ваш код на моей стороне, кажется, что он работает, только пришлось сменить кнопку с типа кнопки, чтобы отправить тип, и получил 2 предупреждения – Lupin

+0

о, да, вы правы! спасибо :))) –

ответ

0

У вас есть вложенные петли, используя переменную «i». Попробуйте изменить это, чтобы каждый цикл имел индивидуальное (идеально описательное) имя переменной.

+0

Я пробовал, но не работал, если я не выбрал никаких вопросов. –

0

Поскольку вы добавили , я предлагаю решение с помощью JQuery:

function checkAnswers() { 
    var questions = {}; 
    $('#form input[type="radio"]').each(function() { 
     // add all questions 
     questions[this.name] = true; 
    }).filter(":checked").each(function() { 
     // remove questions that have an answer 
     delete questions[this.name]; 
    }); 
    for (var k in questions) { 
     alert("Must answer question number " + k + "!"); 
    } 
} 

questions используется здесь to mimic a set.

Но ваша кнопка представить также должна иметь тип submit, не button или вам нужно добавить onclick обработчик:

<input type="submit" name='submit' value="Submit" /> 
Смежные вопросы