2016-03-02 142 views
0

您好,我是网络开发新手。我在html5中创建了一个简单的测试问题,其中用户只选择一个答案(使用无线电)。这在HTML和JavaScript中完成。没有后端。我想确定在转移到下一个问题之前已经选择了一个单选按钮。如果单选按钮没有被选中,它会显示一个警告,告诉用户在前进之前必须选择一个答案。如何检查单选按钮是否使用javascript选择

下面是我的代码:

<section> 
    <p class="questions">Given points (X1, Y1) and (X2, Y2) select the formula to find the equation of the given line.</p> 
    <div > 
    <form class="answers"> 
    <input type="radio" name="radio" value="correct"> 
    <math xmlns = "http://www.w3.org/1998/Math/MathML"> 
     <mrow> 
     <mi> y</mi> 
     <mo>=</mo> 
     <mi>m</mi> 
     <mo>&InvisibleTimes;</mo> 
     <mi>x</mi> 
     <mo>+</mo> 
     <mi>b</mi> 
     </mrow> 
    </math> 

    <!-- 2nc choice --> 
    <input type="radio" name="radio" value="incorrect" > 
     <math xmlns = "http://www.w3.org/1998/Math/MathML"> 
      <mrow> 
      <mrow> 
       <mo>(</mo> 
       <mi>x</mi> 
       <mo>-</mo> 
       <mi>h</mi> 
       <msup> 
       <mo>)</mo> 
       <mn>2</mn> 
      </msup> 
      </mrow> 
      <mo>+</mo> 
      <mrow> 
       <mo>(</mo> 
       <mi>y</mi> 
       <mo>-</mo> 
       <mi>k</mi> 
       <msup> 
       <mo>)</mo> 
       <mn>2</mn> 
       </msup> 
      </mrow> 
      <mo> = </mo> 
      <mrow> 
       <msup> 
       <mi> r</mi> 
       <mn>2</mn> 
       </msup> 
      </mrow> 
     </mrow> 
     </math> <br> 

     <!-- 3rd choice --> 
    <input type="radio" name="radio" value="incorrect"> 
     <math xmlns = "http://www.w3.org/1998/Math/MathML"> 
     <mrow> 
     <mrow> 
      <mi>y</mi> 
      <mo>-</mo> 
      <msub> 
      <mi>y</mi> 
      <mn>1</mn> 
      </msub> 
     </mrow> 
     <mo> = </mo> 
     <mrow> 
      <mi>m</mi> 
      <mo>&InvisibleTimes;</mo> 
      <mo>(</mo> 
      <mi>x</mi> 
      <mo>-</mo> 
      <msub> 
      <mi>x</mi> 
      <mn>1</mn> 
      </msub> 
      <mo>)</mo> 
     </mrow> 

     </mrow> 
     </math> 

     <!--4th Choice --> 
    <input type="radio" name="radio" value="incorrect"> 
     <math xmlns = "http://www.w3.org/1998/Math/MathML"> 
     <mrow> 
      <mrow> 
      <mi>y</mi> 
      <mo>-</mo> 
      <msub><mi>y</mi><mn>2</mn></msub> 
     </mrow> 
     <mo> = </mo> 
     <mrow> 
      <mfrac> 
      <mrow> 
      <msub><mi>y</mi><mn> 2</mn></msub> 
      <mo> - </mo><msub><mi> y</mi><mn> 1</mn></msub> 
      </mrow> 
      <mrow> 
      <msub><mi>x</mi><mn> 2</mn></msub> 
      <mo> - </mo><msub><mi> x</mi><mn> 1</mn></msub> 
      </mrow> 
      </mfrac> 
     </mrow> 
     <mrow> 
      <!-- <mo>&InvisibleTimes;</mo> --> 
      <mo>(</mo> 
      <mi> x </mi> 
      <mo> - </mo> 
      <msub><mi> x</mi><mn>2</mn></msub> 
      <mo>).</mo> 
     </mrow> 

     </mrow> 
     </math> 

    <br> 
     <!-- submit button --> 
    <input type="submit" value="Submit & Next Question" onclick="getAnswer1(this.form)"> 
    <!-- clears the radio --> 
    <input type="submit" value="Cancel & Clear Selection" onclick=""> 
    </form> 
</div> 
</section> 

<script type="text/javascript" src="script.js"></script> 

我知道我的JavaScript代码是错误.. 的Javascript:

/**Trouble making sure user selects an input doesn't matter if its wrong or right. An alert should displayed if user attempts to go to next question. Must select an option. **/ 
//global array stores answers 
var results = []; 
function getAnswer1(form) { 
    var radios = form.elements['radio']; 
    for(var i = 0; i < radios.length; i++) { 
    if(radios[i].checked) { 
     // 
    } 
    } 
} 
+0

你的HTML有'NAME = “无线电”',但你的Javascript有'form.elements ['radios']'。 JS中额外的's'使它无法工作。 – Barmar

+0

@Bamar哦是的我纠正,谢谢你将在 – user3497437

回答

0
var radios = document.getElementsByTagName('input'); 
var value; 
for (var i = 0; i < radios.length; i++) { 
    if (radios[i].type === 'radio' && radios[i].checked) { 
     // get value, set checked flag or do whatever you need to 
     value = radios[i].value;  
    } 
} 
+0

后更新如果单选按钮没有被选中,并且用户尝试提交而没有检查按钮,我如何创建一个提醒 – user3497437

+0

for循环完成后,值变量是空的,这意味着没有单选按钮被选中。然后你可以简单地调用alert(“你必须选择一个选项”); –

+0

当您找到检查的值时,您可以跳出循环。 – Barmar

1

您可以使用document.querySelector找到检查并获得它的价值。

function getAnswer1(form) { 
    var checked = form.querySelector("input[type=radio]:checked"); 
    var value; 
    if (!checked) { 
     alert("You need to select one of the options"); 
     return; 
    } else { 
     value = checked.value; 
    } 
    results.push(value); 
} 

另外,为了防止形式从提交当你点击submit按钮,更改

onclick="getAnswer1(this.form)" 

到:

onclick="getAnswer1(this.form; return false;" 
+0

我试图在我下面使用Dennis Nerush示例来存储数组中的单选按钮的结果,但是当我试图在控制台上显示数组时,它将返回空。请问我做错了什么 – user3497437

+0

还有什么区别btwn querySelector和form.element ['radio'] – user3497437

+0

'querySelector'允许您使用CSS选择器语法来做更复杂的匹配。 – Barmar

相关问题