`
53873039oycg
  • 浏览: 843886 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

JsRender生成简单Input,Select

 
阅读更多

       下面的例子是使用JsRender生成简单的Input,Select,代码如下

       

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>利用JsRender动态生成input</title>
<style>
* {
	margin: 0px;
	padding: 0px;
	margin: 0 auto;
}

#contentDiv {
	width: 800px;
	margin: 0 auto;
	border-bottom: 2px solid #e6e6e6;
	padding:0 0 10px 0;
}

#titleDiv {
	padding: 30px 0 5px 5px;
	font: 500 18px "微软雅黑";
}

#inputDiv {
	border-top: 2px solid #e6e6e6;
	vertical-align: middle;
	padding: 5px 0 0 7px;
}
#inputDiv table td{
  padding: 2px 0;
}

#inputDiv input {
	width: 120px;
}

#inputDiv span {
	font-size: 14px;
}

.fixClass {
	width: 120px;
	height: 22px;
	line-height: 20px;
}

#submitDiv {
	padding: 20px 0 15px 0;
	text-align: center;
}

.spanClass {
	color: #fff;
	background: #89D900;
	height: 25px;
	width: 100px;
	display: inline-block;
	line-height: 25px;
	font-weight: bold;
	text-align: center;
	cursor: pointer;
}

.banClass {
	padding: 0 20px 0 20px;
}
</style>
<script type="text/javascript" src="../../js/jquery-2.1.0.js"></script>
<script type="text/javascript" src="../../js/wdatepicker/WdatePicker.js"></script>
<script type="text/javascript" src="../../js/jsrender/jsrender.js"></script>
<script id="textTemp" type="text/x-jsrender">
    <input type="text" id="{{:V_KEY}}" name="{{:V_KEY}}">
</script>
<script id="dateTemp" type="text/x-jsrender">
    <input type="text" id="{{:V_KEY}}" name="{{:V_KEY}}" class="Wdate" onfocus="WdatePicker({{:V_DateFocus}})">
</script>
<script id="selectTemp" type="text/x-jsrender">
     <select name="{{:V_KEY}}" id="{{:V_KEY}}" class="fixClass">
				 <option value="-1">所有</option>'
				 {{for selectData}}'
				 <option value="{{:S_KEY}}">{{:S_VALUE}}</option>
	  {{/for}}
     </select>
</script>
<script id="hiddenTemp" type="text/x-jsrender">
    <input type="hidden" id="{{:V_KEY}}" name="{{:V_KEY}}" value="{{:V_VALUE}}" />
</script>
<script type="text/javascript">
	function generateTableData(v_jsonData, v_form) {
		var jsonData = v_jsonData.data;
		var varTableHtml = '<table  cellpadding="0" cellspacing="0" border="0" width="100%">';
		for (var i = 0, len = jsonData.length; i < len;) {
			varTableHtml += "<tr>";
			/* 注意不要越界 */
			for (var j = 0; j < 3&&i<len; j++) {
				var varType = jsonData[i].V_TYPE;
				var varHtml =$('#'+varType+'Temp').render(jsonData[i]);
				if (varType!='hidden') {
					varTableHtml += "<td><label>" + jsonData[i].V_NAME
							+ ":</label></td><td>" + varHtml + "</td>";
				} else {
					varTableHtml += varHtml;
				}
				i++;
			}
			varTableHtml += "</tr>";
		}
		varTableHtml += "</table>";
		$('#' + v_form).html(varTableHtml);
	}
	var jsonData = {
		data : [ {
			V_TYPE : "date",
			V_KEY : "begin_date",
			V_NAME : "开始时间",
			V_DateFocus: "{startDate:'%y',dateFmt:'yyyy-MM-dd',alwaysUseStartDate:true,maxDate:'#F{$dp.$D(\\'end_date\\')}'}",
		}, {
			V_TYPE : "date",
			V_KEY : "end_date",
			V_NAME : "结束时间",
			V_DateFocus:"{startDate:'%y',dateFmt:'yyyy-MM-dd',alwaysUseStartDate:true,maxDate:'#F{\\'2099-12-31\\'}',minDate:'#F{$dp.$D(\\'begin_date\\')}'}",
		}, {
			V_TYPE : "select",
			V_KEY : "selectId",
			V_NAME : "测试单选",
			selectData : [ {
				S_KEY : "1",
				S_VALUE : "测试"
			}, {
				S_KEY : "2",
				S_VALUE : "测试2"
			}, {
				S_KEY : "3",
				S_VALUE : "测试3"
			} ]
		},{
			V_TYPE : "text",
			V_KEY : "t_name",
			V_NAME : "测试中文"
		},{
			V_TYPE : "hidden",
			V_KEY : "hiddenId",
			V_VALUE : "123"
		}]
	};
	function closeWin() {
		var browserName = navigator.appName;
		if (browserName == "Netscape") {
			var opened = window.open('about:blank', '_self');
			opened.opener = null;
			opened.close();
		} else if (browserName == "Microsoft Internet Explorer") {
			window.opener = null;
			window.open('', '_self');
			window.close();
		}
	}
	$(function() {
		generateTableData(jsonData, "inputForm");
		$('#sbtSpan').on('click',function() {
			var varForm = $('#inputForm').serialize();
			console.log(varForm);
		});
		$('#closeSpan').on('click',closeWin);
	});
</script>
</head>
<body>
	<div id="contentDiv">
		<div id="titleDiv">
			<label>名称:JsRender动态生成Input</label>
		</div>
		<div id="inputDiv">
			<form method="post" action="#" id="inputForm">
				
			</form>
		</div>
		<div id="submitDiv">
			<span class="spanClass" id="sbtSpan">提交</span> <span class="banClass" /> <span
				class="spanClass" id="closeSpan">关闭</span>
		</div>
	</div>
</body>
</html>

    运行结果为:

 

    

      提交,结果为:

     

     本文系原创,转载请注明出处,谢谢

     全文完

 

  • 大小: 22.4 KB
  • 大小: 47.1 KB
0
0
分享到:
评论

相关推荐

    解决使用layui的时候form表单中的select等不能渲染的问题

    如果只针对select元素进行渲染,可以使用form.render('select')方法,并通过lay-filter属性来指定需要渲染的元素。 在使用form.render方法时,需要注意的是,必须先引入layui的form模块,通过layui.use方法加载form...

    vue+element创建动态的form表单及动态生成表格的行和列

    在本文中,作者详细讲解了如何使用Vue.js框架配合Element UI库来创建动态表单以及动态生成表格的行和列。本文基于实例代码,从实际操作的角度出发,介绍了技术实现的过程和方法,具有很高的参考价值。 首先,我们...

    基于 ElementUI 的表单设计器

    8. **API接口**:在实际项目中,f-render生成的表单可能需要与后端API进行交互,因此,熟悉RESTful API的设计和使用是必要的。 9. **版本控制**:f-render-master可能代表项目的源码仓库,使用Git等版本控制系统...

    jquery基于layui实现二级联动下拉选择(省份城市选择)

    最后,调用`form.render('select')`更新layui的表单渲染,确保城市下拉框的变化能正确显示。 为了使这个功能正常工作,后端服务需要提供一个API,例如`/api/getCity`,它接收省份ID(`pid`)作为参数,返回包含对应...

    layui的布局和表格的渲染以及动态生成表格的方法

    Layui同样提供了表单元素的UI支持,使得开发者能够仅使用基础的HTML标签如input、select、textarea等,就能够实现美观的表单界面。实现表单的基本步骤包括: - 为表单的父元素添加class="layui-form"。 - 在表单内部...

    vue_vueelement_

    Vue.js 是一款非常流行的前端JavaScript框架,用于构建用户界面。Element UI 是一套基于 Vue.js 的组件库,专门用于快速开发美观、易用的Web应用程序。它提供了丰富的UI组件,如表格、按钮、提示、下拉菜单等,极大...

    flask-visualization-template:如何配置scikit-learn + flask + d3管道的示例

    - **事件监听**:利用D3.js的`on`方法监听用户交互,如`d3.select().on("input", function)`。 - **跨域资源共享(CORS)**:如果前端和后端不在同一域名下,需要设置Flask的CORS策略以允许跨域请求。 **实际应用** ...

    基于Node的React图片上传组件实现实例代码

    在本文中,我们将探讨如何使用React和Node.js实现一个图片上传组件。这个组件提供了一种用户友好的方式来选择、预览和上传图片,并且支持拖放功能。我们将分析前端和后端的实现细节。 首先,前端部分是用React构建...

    Tapestry字典0.1.pdf

    **8.1 简单js** - **实现**: 在页面中直接使用`&lt;script&gt;`标签来编写JavaScript代码。 - **示例**: `&lt;script&gt;alert('Hello');&lt;/script&gt;` **8.2 可复用js (tapestry4.1自动添加dojo所以再源例上做了修改)** - **实现*...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    --也就是说生成的input的type不能是"submit",而这个限制在有些情况下是不可原谅的。 --我们做了优化,现在要使一个Asp.net的按钮能够AJAX提交,你不需要做任何设置(PageManager的属性EnableAjax为true即可,这...

    ExtAspNet_v2.3.2_dll

    -增加示例(iframe/parent_postback_run3.aspx),如何通过简单的Javascript代码回发父页面(feedback:eroach)。 -修正一些书写错误(feedback:bmck)。 -从Region控件中删除SplitColor属性,增加CollapseMode, ...

Global site tag (gtag.js) - Google Analytics