下面的例子是使用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>
运行结果为:
提交,结果为:
本文系原创,转载请注明出处,谢谢。
全文完。
相关推荐
如果只针对select元素进行渲染,可以使用form.render('select')方法,并通过lay-filter属性来指定需要渲染的元素。 在使用form.render方法时,需要注意的是,必须先引入layui的form模块,通过layui.use方法加载form...
在本文中,作者详细讲解了如何使用Vue.js框架配合Element UI库来创建动态表单以及动态生成表格的行和列。本文基于实例代码,从实际操作的角度出发,介绍了技术实现的过程和方法,具有很高的参考价值。 首先,我们...
8. **API接口**:在实际项目中,f-render生成的表单可能需要与后端API进行交互,因此,熟悉RESTful API的设计和使用是必要的。 9. **版本控制**:f-render-master可能代表项目的源码仓库,使用Git等版本控制系统...
最后,调用`form.render('select')`更新layui的表单渲染,确保城市下拉框的变化能正确显示。 为了使这个功能正常工作,后端服务需要提供一个API,例如`/api/getCity`,它接收省份ID(`pid`)作为参数,返回包含对应...
Layui同样提供了表单元素的UI支持,使得开发者能够仅使用基础的HTML标签如input、select、textarea等,就能够实现美观的表单界面。实现表单的基本步骤包括: - 为表单的父元素添加class="layui-form"。 - 在表单内部...
Vue.js 是一款非常流行的前端JavaScript框架,用于构建用户界面。Element UI 是一套基于 Vue.js 的组件库,专门用于快速开发美观、易用的Web应用程序。它提供了丰富的UI组件,如表格、按钮、提示、下拉菜单等,极大...
- **事件监听**:利用D3.js的`on`方法监听用户交互,如`d3.select().on("input", function)`。 - **跨域资源共享(CORS)**:如果前端和后端不在同一域名下,需要设置Flask的CORS策略以允许跨域请求。 **实际应用** ...
在本文中,我们将探讨如何使用React和Node.js实现一个图片上传组件。这个组件提供了一种用户友好的方式来选择、预览和上传图片,并且支持拖放功能。我们将分析前端和后端的实现细节。 首先,前端部分是用React构建...
**8.1 简单js** - **实现**: 在页面中直接使用`<script>`标签来编写JavaScript代码。 - **示例**: `<script>alert('Hello');</script>` **8.2 可复用js (tapestry4.1自动添加dojo所以再源例上做了修改)** - **实现*...
--也就是说生成的input的type不能是"submit",而这个限制在有些情况下是不可原谅的。 --我们做了优化,现在要使一个Asp.net的按钮能够AJAX提交,你不需要做任何设置(PageManager的属性EnableAjax为true即可,这...
-增加示例(iframe/parent_postback_run3.aspx),如何通过简单的Javascript代码回发父页面(feedback:eroach)。 -修正一些书写错误(feedback:bmck)。 -从Region控件中删除SplitColor属性,增加CollapseMode, ...