我正在尝试使用javascript验证HTML表单,但由于没有弹出警报,我认为我的checkSubmit()函数未被调用。但是,在函数开头添加了一个额外的警报后,它确实正在触发,但在检查完第一个条件后不会再弹出警报。
<script language="javascript" type="text/javascript">
function checkSubmit() {
alert("Hello from Javascript!");
if (document.getElementById("user").value.toString.length <1) {
alert("Please enter a user name.");
return false;
}
if (document.getElementById("location").value.toString.length <1) {
alert("Please enter a location.");
return false;
}
if (document.getElementById("depart").value.toString.length <1) {
alert("Please enter a department.");
return false;
}
if (document.getElementById("category").value.toString.length <1) {
alert("Please enter a problem type.");
return false;
}
if (document.getElementById("info").value.toString.length <1) {
alert("Please enter a problem description.");
return false;
}
alert("Hello from Javascript2!");
return true;
}
</script>
<form name="submit" type="submit" method="POST" onsubmit="return checkSubmit();">
[...]
<input type="submit" name="submit" value="Submit" >
</form>
除非我犯了错误(事后我肯定会很明显),不管是否有任何条件是真是假,都不应该弹出第二个警告?
答案 0 :(得分:1)
您不需要toString
,因为.value
已经是一个字符串,无论如何您使用的都是错误的 - 您需要说.toString()
。实际上,它返回函数定义,因此.length
将为0
。正如您所说,您需要正确设置每个框的id
属性。
function checkSubmit() {
if (document.getElementById("user").value.length < 1) {
alert("Please enter a user name.");
return false;
}
if (document.getElementById("location").value.length < 1) {
alert("Please enter a location.");
return false;
}
if (document.getElementById("depart").value.length < 1) {
alert("Please enter a department.");
return false;
}
if (document.getElementById("category").value.length < 1) {
alert("Please enter a problem type.");
return false;
}
if (document.getElementById("info").value.length < 1) {
alert("Please enter a problem description.");
return false;
}
return true;
}