0

我正在使用以下 javascript 代码来检查表单中是否没有输入任何内容并且它不起作用。任何人都可以提出一个理由吗?

           function validateForm()
{
    var a=document.getElementById("quiz_01").value;
    $question = a;
    if (a=="" || a==null) {
      alert("Question 201 must be filled out");
      form1.quiz_01.focus();
      return false;
      }
}

html的摘录如下:

<form id="form1" name="form1" method="post" action=""  onsubmit="return validateForm()">
<table class="table">
    <tr>
        <td>
            <label for="quiz_01">201 A one followed by 100 zeros is a Googol</label>
        </td>
        <td>
            <select name="quiz_01" id="quiz_01">
                <option value=" "> </option>
                <option value="100">100</option>
                <option value="90">90</option>
                <option value="80">80</option>
                <option value="70">70</option>
                <option value="60">60</option>
                <option value="50">50</option>
                <option value="40">40</option>
                <option value="30">30</option>
                <option value="20">20</option>
                <option value="10">10</option>
                <option value="0">0</option>
            </select>
        </td>
    </tr>
</table>
<p>
    <input type="submit" name="next" value="Next &gt;">
</p>

4

6 回答 6

2

第一个选项:

<option value=" "> </option>

具有单个空格的值,而不是空字符串。所以要么改变要么改变valueJS代码。另请注意,该.value属性永远不会存在null,因此您无需对此进行测试。

if (a == " ") {

演示:http: //jsfiddle.net/RyN5W/

于 2013-07-01T11:15:18.930 回答
1

修剪空格。

 var a=document.getElementById("quiz_01").value.trim();
于 2013-07-01T11:16:30.597 回答
0

改变

if (a=="" || a==null)

if (a==" " || a==null)
于 2013-07-01T11:16:15.590 回答
0

您应该根据您的 HTML 检查“”

if (a == " ") {
于 2013-07-01T11:16:22.200 回答
0

将代码更改为

var e = document.getElementById("quiz_01");
    var ev = e.options[e.selectedIndex].text;

if(ev===' '){
alert('question 201 is a required field');

}

你应该使用 === 而不是 == whwn 比较字符串

于 2013-07-01T11:17:10.650 回答
0

使用<select>元素时,您无法直接访问该值。使用以下:

var element = document.getElementById("quiz_01");
var a = element.options[element.selecedIndex];

编辑:(归功于nnnnnn
在现代浏览器中,直接访问将起作用,但如果您的目标是旧版本(我认为特别是 Internet Explorer ;))显示的方法将使您获得兼容性。

于 2013-07-01T11:17:26.070 回答