木子屋 Dnawo's BLOG

用submit()提交表单致使onsubmit失效解决方法

👤 dnawo 📅 2007-02-02 👁 13844 👍 0 💬 0 🔄 本站原创
一、下边本文中将要用到的脚本

<script language="javascript">
//表单提交
function submit1(obj){
	obj.submit();
}
//表单提交,调用checked函数
function submit2(obj){
	return checked();
	obj.submit();
}
//表单提交,将ehecked函数内容写入submit3
function submit3(obj){
	if(document.form1.username.value == ""){alert("姓名忘了填写?");document.form1.username.focus();return false;}
	obj.submit();
}
//表单验证
function checked(){
	if(document.form1.username.value == ""){alert("姓名忘了填写?");document.form1.username.focus();return false;}
	return true;
}
</script>


二、分析过程

1.通常的表单验证法,在form中加入onsumbit事件

<form id="form1" name="form1" method="post" action="mzwucom.asp" onsubmit="checked();">
  UserNmae:
  <input name="username" type="text" id="username" size="10" maxlength="10" />
  <input type="submit" name="Submit" value="提交" />
</form>


结果:验证机制发生作用!

2.在1的基础上改为通过调用submit()方法提交表单(红色为和1相比修改部分,下同)

<form id="form1" name="form1" method="post" action="mzwucom.asp" onsubmit="checked();">
  UserNmae:
  <input name="username" type="text" id="username" size="10" maxlength="10" />
  [color=Red]<input type="button" name="Submit" value="提交" onclick="submit1(this.form);" />[/color]
</form>


结果:验证机制失效,表单直接提交!

3.在1的基础上去掉onsubmit事件,调用submit2

<form id="form1" name="form1" method="post" action="mzwucom.asp">
  UserNmae:
  <input name="username" type="text" id="username" size="10" maxlength="10" />
  [color=Red]<input type="button" name="Submit" value="提交" onclick="submit2(this.form);" />[/color]
</form>


结果:验证机制发生作用,但正确时表单没有提交,由于return true在submit()前!

4.在1的基础上去掉onsubmit事件,调用submit3

<form id="form1" name="form1" method="post" action="mzwucom.asp">
  UserNmae:
  <input name="username" type="text" id="username" size="10" maxlength="10" />
  [color=Red]<input type="button" name="Submit" value="提交" onclick="submit3(this.form);" />[/color]
</form>


结果:验证机制发生作用,通过则提交表单!

评论(0)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 从mzwu类学习ASP类(续):Visual Basic6.0开… 下一篇 → 简单form标准化实例——语义结构