首页 > 技术文章 > 同一个表单,传递到不同的处理器中

wtyhome 2017-08-05 11:38 原文

在使用框架或者编写其他的处理程序的时候会遇到这种情况,在一个表单中有多个输入的信息,但要采用不同的处理方法,也就是需要传递给不同的后台文件中去,但form的属性中只能写一个action,我们如何去把同一个表单中的内容传递给不同的处理程序呢?
我这里有两种解决的办法,一个是利用html5的新特性,另一个则是用jquery来解决。

html5新特性

在html5中有个方法,在input同时type=“submit”的标签中存在两个属性 form 和formaction。form属性值是表单的id,formaction的属性值是传递路径。

<!-- __CONTROLLER__/delAll 是thinkphp框架中控制器的路径,这里只需填写您的处理程序的路径即可 -->
<input type="submit" form="myform" formaction="__CONTROLLER__/delAll" value="批量删除" class="btn btn-primary btn2"/>
<input type="submit" form="myform" formaction="__CONTROLLER__/sort"  value="更新排序" class="btn btn-primary btn2"/>
jquery

首先设置点击提交按钮时利用id获取到form标签,然后再把属性值改为需要传递的处理程序的地址。

	$("#submit_id").click(function(){
                //在1.6以上的jquery中不在使用attr()方法,而是有新的prop()方法代替
		if($("#form_id").prop("action")){
			$("#form_id").prop("action","__CONTROLLER__/sort");
		}
	});

推荐阅读