submit提交表单(多个submit,多个form)

c:foreach各参数详解
http://blog.csdn.net/liu78778/archive/2009/03/09/3973786.aspx

一个关于多个submit提交表单的问题

先大致说下页面的情况:

页面是根据获得到的集合循环生成多个表单块,每个表单块里面有三个按钮(发布,发布价格,下线)

因为源文件代码量太大,不好贴出来,我手写个差不多情况,以便更好理解

function submitform(str1,obj){
var c = window.confirm( '确定进行操作? ') ;

if(c == true){
var str = "form"+str1;
var test = "evenidStr"+str1;
var whatstr = "what"+str1;
var strEv = "";
var formtest = document.getElementById(str);
var allInput = formtest.elements;
var len = allInput.length;
for(var j=0;j<len;j++){
if(allInput[j].type=="checkbox"){
if(allInput[j].checked){
 strEv += allInput[j].value+",";
}
}
}
if(obj.value=="下线"){
document.getElementById(whatstr).value = "下线";
}else if(obj.value=="发布价格"){
document.getElementById(whatstr).value = "发布价格";
}
document.getElementById(test).value = strEv;
formtest.submit();

}else{
return false;
}
}

<c:forEach var="plate" items="${forum.plates}" varStatus="c">
<form action="xxx" method="post" id="form">

<table>
...HTML代码
</table>

<input type="submit" value="发 布" name="submit"/>
<input type ="submit"value ="发布价格" name="submit"/>
<input type="button" value= "下线" name="submit" οnclick="submitform(xx,this)"/>

</form>
</c:forEach>
点击提交后,在后台根据名字获取sumbit的值 然后根据值进行相应操作

现在需求在table中添加一列,复选框,进行选择性提交,提供全选和取消全选的超链接

我写了个js获取选中复选框,然后加了个隐藏域,将选中的ID拼接成字符串存放在隐藏域中,在后台获取隐藏域的值,拆分进行操作,js添加在form的onsubmit()方法中


遇到的第一个问题

1.全选的时候整个页面的复选框全被选中

解决方案:
先获得此表单,然后获取表单中的元素,然后根据元素的类型和选中情况获得ID
(这个js写的应该是效率很不好)
js代码:
function selectAll(str){
str = "form"+str;
var formtest = document.getElementById(str);
var allInput = formtest.elements;
for(var j=0;j<allInput.length;j++){
if(allInput[j].type=="checkbox"){
allInput[j].checked = true;
}
}
 }

2.提交的时候总是提交不了

解决方案:
貌似是button提交表单的时候,如果表单中有名字为submit的按钮是提交不了

我自己也说不清,下面贴出查出的经典实例

<form action="www.google.com">
<input type="text" name="property" />
<input name="submit" value="submit" type=submit />
<input type="button" value="sub" οnclick="javascript:this.form.submit()" />
</form>


表现就是 点submit可以提交,点sub无法提交。。。

于是怀疑form的submit函数有问题,尝试打印出form的所有属性,发现submit的值是字符串submit,

而不是一个function,看到submit的name后,恍然大悟,

button的name值设为submit后,它成为了form的一个属性,从而覆盖了form原有的submit函数。。

修正方法也很简单,将submit的name改为其他值就可以了。

变量名有意识的避开潜在关键字,还是一个挺好的习惯。

正是因为我之前在写表单的时候都避开了类似的关键字(从未出过类似问题),

所以看到他的表单的submit的时候只是觉得有点不妥,却没有警觉起来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值