A-A+
jquery 动态创建表单并提交例子
创建表单可以使用js或jquery来创建了,然后提交的就可以直接使用obj.submit()方法进行提交,具体实现方法其实非常的简单,下面来看看。
有时候在写web 应用的时候,需要临时动态构造一个form 并提交,form 里面的参数以及action,以及是post请求还是get请求,甚至form 的样式都是可以指定的,用原生的javascript 肯定可以做到,我用jquery做了一个测试。
我自己测试的是构造一个分页的post请求, 为了防止csrf 攻击,加入了csrf 验证,不需要的可以去掉.
例子:
- function genSearchObj(url,page,pageSize,keyword){
- var params = {};
- params.url = url;
- params.page = page;
- params.pageSize = pageSize;
- params.cond = keyword;
- return params;
- }
- function mockFormSubmit(params){
- var form = $('<form />', {action : params.url, method:"post", style:"display:none;"}).appendTo('body');
- $.each(params, function(k, v) {
- if ( k != "url" ){
- form.append('<input type="hidden" name="' + k +'" value="' + v +'" />');
- }
- });
- form.append('<input type="hidden" name="csrfToken" value="' + $("#csrf_token").val() + '" />' );
- form.submit();
- }
例子2
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>createElement</title>
- <style type="text/css">
- .warpper{ border:1px solid red; padding:8px;}
- </style>
- <script type="text/javascript" language="javascript" src="JavaScript/jquery-1.6.1.min.js" ></script>
- <script type="text/javascript" language="javascript">
- <!--
- ///动态创建一个div
- $(function(){
- $('<div />',{
- id:'test',
- text:"this is a div",
- "class":"warpper",
- click:function(){
- var text=$(this).text();
- alert(text);
- }
- }).appendTo("body");
- });
- //创建input:text
- $(function(){
- $('<input />',{
- type:"text",
- val:"input text somethings...",
- name:"userName"
- }).appendTo("body");
- });
- //创建input select
- $(function(){
- var slt=$('<select />',{name:"country" });
- $('<option />',{
- val:"0",
- text:"请选择"
- }).appendTo(slt);
- $('<option>',{
- val:"CN",
- text:"China",
- selected:"selected"
- }).appendTo(slt);
- $("body").append(slt);
- });
- //创建radio
- $(function(){
- $('<input />',{
- type:"radio",
- name:"rdo",
- checked:"checked",
- val:"男"
- }).appendTo("body");
- $('<label>',{
- text:"男",
- }).appendTo("body");
- $('<input />',{
- type:"radio",
- name:"rdo",
- val:"女"
- }).appendTo("body");
- $('<label>',{
- text:"女"
- }).appendTo("body");
- });
- //creat checkbox
- $(function(){
- $('<input />',{
- type:"checkbox",
- name:"cbox",
- val:"1",
- checked:"checked"
- }).appendTo("body");
- });
- $(function(){
- $('<input />',{
- type:"file",
- name:"myfile"
- }).appendTo("body");
- });
- //-->
- </script>
- </head>
- <body>
- <form>
- </body>
- </html>
你需要把创建好的form添加到DOM中,经过浏览器渲染后才能响应事件和方法。tmpForm.appendTo(document.body).submit();