`
tianhandigeng
  • 浏览: 368478 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

根据不同情况提交表单

    博客分类:
  • java
JSP 
阅读更多

     在项目开发的过程中经常涉及到表单提交的问题,为了使得处理更加灵活一种情况是不设死表单的action属性,而是在后台设置,再显示到前台的jsp中,这是一种情况,这种情况处理起来还是不怎么轻松的。当一个表单中有多个非type为submit的按钮时,当点击按钮做一些判断以后,还是希望把表单项传递给后台,再写这篇文章之前我是这样傻傻处理的,因为表单有个循环,循环中有很多的checkbox,我要做的是当点击按钮的时候做一下判断,然后把这些checkbox的值传递给后台,如果是直接表单提交的话,直接在后台用request.getParameterValues()这种方式就可以了,但是现在我不是直接表单提交(当时傻傻的没想到还是用表单提交),我处理的是在js中设置转向,也就是重新设置window.location.href的值,不过这样就有一个问题,这些同名的checkbox怎样才能传递给后台了,url只能待String类型的参数,那怎么办了,你看我是怎么处理的:

js中:

  //处理选择值
  var pids="";
  idsCheck.each(function(){
      pids+=$(this).val()+",";
  });
window.location.href=""cp.jsp?ac=product&manage=recommend&op=add&ids="+pids";

 我的思路就是把这些值组成一个String,带在url中传递给后台,在后台再用String的split方法来拆成String数组,你说傻不傻,这一看就是非常规的处理方法,一直告诫自己如果你用了非常规方法,这时候后你就要想想其他的思路了,非常规方法虽然达到了效果,但是是不值得的,所以处理问题一定要先从常规的处理方法出发。

    对于上面这种情况,应该怎么解决了。我觉得首先你要弄清楚你要干什么,你不就是希望点击不同的按钮后台能有不同的处理方式吗,既然你可以在js中动态转向,那为什么不直接设计form的action属性使得它提交给不同的处理方法呢,这样数据传送就方便了很多,这种处理方法相当简单,js代码如下:

//商品上架
function onsale(){
   var idsCheck = $(".list input[name='ids']:checked");// ID复选框
   if(idsCheck.length ===0){
     alert("请选中要上架的宝贝!"); 
     return; 
   }
   
   var $listForm = $(".list form");// 列表表单
   //重新设置表单action
   $listForm.attr("action","cp.jsp?ac=product&manage=list&op=onsale");
   $listForm.submit();
}

 这个方法的思路就是,在提交表单之前,重新设置form的action,简单吧!

 

“海燕啊,你说你是不是傻,是不是傻”

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics