Javascript检查表单是否为null

时间:2011-12-02 01:03:49

标签: javascript forms html5 function

我是Javascript的新手所以请耐心等待。我有一个脚本,用于检查某些表单元素是否为空。如果任何表单元素为null,则应显示警报。然而,没有任何反应。我看过大量的例子,似乎无法解决这个问题。

有问题的剧本如下所示:

var age;
var todaysDate;
var birthDate;
var inputOk;

function setDates() {
    if (d.value !== null && m.value !== null && y.value !== null) {
    inputOk = true;

    var day = d.value;
    var month = m.value + 1;
    var year = y.value;
    var today = new Date();
    var dob = new Date(year, month, day);

    todaysDate = today.valueOf();
    birthDate = dob.valueOf();
}
else {
    inputOk = false;
}   
}

function calculateAge() {

}

function outputAge() {
    //var output = document.getElementById('ageOut');
    //document.write('You are aged: '+age);
}

function getAge() { 
setDates();

if (inputOk) {
    calculateAge();
    outputAge();    
}
else {
    alert("Please enter your D.O.B correctly.");
}  
}

相关的HTML表单如下所示:

<form name ="dob" id="dobform">
   <select id="d">
 <option value="null">Day</option>
   </select>
   <select id="m">
 <option value="null">Month</option>
   </select>
   <select id="y">
 <option value="null">Year</option>
   </select>
   <input type="button" value="Get my age!" onclick="getAge();"/>
</form>

3 个答案:

答案 0 :(得分:4)

您输入的值将是字符串"null",而不是真正的null值。在null附近添加引号。

此外,仅通过他们的id访问输入是不好的做法,我不确定它是否甚至是跨浏览器兼容的。使用document.getElementById功能来代替您的元素。

最后,(除非我的记忆失败),目前正在使用的所有浏览器都不支持value元素的select属性。更好地使用select.options[select.selectedIndex].value

答案 1 :(得分:2)

直接通过id访问你的dom元素是一个坏主意。我相信它适用于某些版本的IE,但标准方法是调用document.getElementById("idOfYourControl")

所以要获得“m”的值,请选择:

var mSelect = document.getElementById("m");
mSelect.value;

所以你的功能看起来像是:

function setDates() {
    var dSelect = document.getElementById("d");
    var mSelect = document.getElementById("m");
    var ySelect = document.getElementById("y");

    if (dSelect.value !== "null" && mSelect.value !== "null" && ySelect.value !== "null") {
        inputOk = true;

        //and so on
}

答案 2 :(得分:1)

  

我有一个脚本,用于检查某些表单元素是否为空。

表单元素永远不会为“null”,尽管作为表单控件的元素可能没有值(或者更准确地说,值可能是空字符串),这或多或少等同于“null”。

在您的HTML中,您有:

> <form name ="dob" id="dobform">
>     <select id="d">
>        <option value="null">Day</option>
>    </select>

请注意,在提交表单时要发送的控件值的HTML 4.01(当前HTML标准)中,必须具有名称,因此我将使用名称替换id属性属性并使用比“d”更有用的值(“天”似乎合理)。

此外,在浏览器中常见的是,如果没有选项具有选择属性,则第一个选项将成为所选选项(尽管HTML标准不要求这样做,但可能不适用于所有浏览器)。因此,在许多浏览器中, d 选择的值将始终为“null”,但可以通过编程方式将其设置为其他值。如果要确保第一个选项是默认选项,请为其指定选定的属性:

   <select name="day">
     <option value="null" selected>Day
     <!-- more options -->
   </select>

将表单控件作为表单的命名属性进行访问被认为是一种很好的做法。要测试用户是否选择了默认值以外的某个值,您可以使用类似的测试(假设select = id =“d”的名称=“day”):

var form = document.getElementById('dobform');

if (form.day.value == 'null') {
  // the control with name "day" has a value of the string "null"
}

其他控件应该采用相同的方式处理。

相关问题