<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>验证表单中是否有空值</title>
<style type="text/css">
*{
font-size:12px;
}
</style>
</head>
<body background="images/bg.gif">
<table width="487" height="333" border="0" align="center" cellpadding="0" cellspacing="0" background="images/bg.JPG">
<tr>
<td align="center" valign="top"><br>
<br>
<br>
<br> <br> <table width="86%" border="0" align="center" cellpadding="2" cellspacing="1" bgcolor="#6666CC">
<form name="form1" onsubmit="return AllSubmit()">
<tr bgcolor="#FFFFFF">
<td height="22" align="right">所属类别:</td>
<td height="22" align="left">
<select name="txt1" id="txt1">
<option value="数码设备">数码设备</option>
<option value="家用电器">家用电器</option>
<option value="礼品工艺">日常用品</option>
</select>
<select name="txt2" id="txt2">
<option value="数码相机">数码相机</option>
<option value="打印机">打印机</option>
</select></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="22" align="right">商品名称:</td>
<td height="22" align="left"><input name="txt3" type="text" id="txt3" size="30" maxlength="50"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="22" align="right">市场价格:</td>
<td height="22" align="left"><input name="txt4" type="text" id="txt4" size="10"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="22" align="right">会员价格:</td>
<td height="22" align="left"><input name="txt5" type="text" id="txt5" size="10" maxlength="50"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="22" align="right">商品简介:</td>
<td height="22" align="left"><textarea name="txt6" cols="35" rows="4" id="txt6"></textarea></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="22" align="right">商品数量:</td>
<td height="22" align="left"><input name="txt7" type="text" id="txt7" size="10"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="22" colspan="2" align="center"><input name="sub" type="submit" id="sub2" value="提交">
<input type="reset" name="Submit2" value="重置"> </td>
</tr>
</form>
</table></td>
</tr>
</table>
<script type="text/javascript">
<!--
function AllSubmit(){
var T=true;//初始化变量
var e=window.event;//获取事件对象
var obj=e.srcElement;//获取发生事件的元素
for (var i=1;i<=7;i++){
if (eval("obj."+"txt"+i).value==""){//如果表单元素有空值
T=false;//为变量T进行重新赋值
break;//跳出for循环语句
}
}
if (!T){//如果变量T的值为false
alert("提交信息不允许为空");//弹出对话框
}
return T;//返回变量T的值
}
//-->
</script>
</body>
</html>上面代码中的eval是干啥的?是啥意思?从词源角度讲一下它的意思
在您提供的代码中,eval() 函数的作用是将字符串作为 JavaScript 代码来执行。
具体到这段代码:
eval("obj."+"txt"+i).value在循环中,当
i=1时,"obj."+"txt"+i拼接成字符串"obj.txt1"eval("obj.txt1")就会执行这段字符串代码,相当于直接写obj.txt1这样就动态获取了表单中
name="txt1"的元素对象
从词源角度解释:eval 来源于英语单词 "evaluate"(评估、求值),意思是"对表达式进行求值"。在编程语境中,它特指"对字符串形式的代码进行解析并执行"。
不过需要说明的是,现代 JavaScript 开发中已经不推荐使用 eval(),主要因为:
安全性风险:可能执行恶意代码
性能较差:需要动态编译执行
调试困难
更好的替代方案是:
// 使用 DOM 方法直接获取元素
document.getElementById("txt" + i).value
// 或者
document.forms["form1"]["txt" + i].value您代码中的验证逻辑完全可以用更安全、高效的方式重写。