这两天做列表数据显示的时候,几乎被"对象不支持此属性和方法" 的错误提示搞疯掉了,两个完全一样的程序(事后才知道有个单词的大小写
不一样),竟然一个显示正常,一个却频繁提示出错。
在一般情况下,同一个表单只能被提交给同一个地址。但在实际web应用中,我们希望同一个表单可以根据用户的选择来完成不同的操作,即表
单的分向提交。比如说:在一个网站后台用户管理系统中,我需要对一些恶意的用户进行批量解锁,锁定用户或者删除的操作,当我从select
中选择删除会员时,我们希望表单会提交给能进行删除的处理程序,当我 从select 中选择锁定会员时,我们希望表单会 提交到锁定会员的处
理程序,解锁会员 也如此。我们极不愿意看到分别为这三个功能建立三个不同的页面,而其中仅仅 是处理程序不同。
利用客户端JavaScript的功能,我们简化可以把三项功能简化一个界面就可以完成,一个select,其中放置要进行的操作,一个Submit按钮(其
实一个普通的Button也可以实现,)
<form action="?" method="post" enctype="application/x-www-form-urlencoded" name="listfrm" id="listfrm">
<label>
<select name="Action" size="1" id="Action">
<option value="delete">删除</option>
<option value="lock">删除</option>
<option value="unlock">删除</option>
</select>
</label>
<input name="Submit" id="Submit" type="submit" value="确定" οnclick="doPostBack(this.form,'?" />
</form>
这是JavaScript中doPostBack函数的源代码,其中传递的参数为表单对象的引用和表单的action文件地址
function doPostBack(formObj,actionFile){
if(confirm("确定要执行的操作吗?")){
formObj.action=actionFile;
formObj.submit();
return true;
}
return false;
}
这样可以在一个表单中放上多个Button,甚至是连接,都可以实现同一个表单的提交给不同的处理程序。
在做表单处理时要注意:
1、表单应该包含name,aciton,method这三个必须的属性,enctype,id这两个属性可以根据需要加上,一般是建议加上,表单不要嵌套
2.document.form.action与document.form.submit()一定不要搞混,action是属性,submit是方法,方法不要忘记加上左右括号,这是一般新手经常遇到的问题。
3.在一个完整表单中,不应有名字为action或submit的标签,否则将会产生"对象不支持此属性和方法"的ie错误。如代码"<input type='xxxx' name="action" >"或"<input type='xxxx' name="submit" >" 在表单中是不允许出现的,而Action和Submit则是允许的(上面的程序代码就是用的是这样的写法),因为JavaScript是区分大小写.