我是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>
答案 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"
}
其他控件应该采用相同的方式处理。