`

easyui form小工具

 
阅读更多

http://download.microsoft.com/download/7/2/F/72F9A516-384C-408A-A1CE-3934EE96B993/wacserverlanguagepack.exe
  <!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
	<title>Basic Form - jQuery EasyUI Demo</title>
	<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
	<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
	<link rel="stylesheet" type="text/css" href="../demo.css">
	<script type="text/javascript" src="../../jquery.min.js"></script>
	<script type="text/javascript" src="../../jquery.easyui.min.js"></script>
	<script type="text/javascript" src="Utils.js"></script>
</head>
<body>
    <h2>Basic Form</h2>
    <p>Fill the form and submit it.</p>
    <div style="margin:20px 0;"></div>
    <div class="easyui-panel" title="New Topic" style="width:400px">
        <div style="padding:10px 60px 20px 60px">
        <form id="ff" method="post">
            <table cellpadding="5">
                <tr>
                    <td>Name:</td>
                    <td><input class="easyui-textbox" type="text" name="tname" data-options="required:true"
							mapping="{name: 'tname', defalut: 'd_value', handler: doHandler}"></input></td>
                </tr>
                <tr>
                    <td>Email:</td>
                    <td><input class="easyui-textbox" type="text" name="email" data-options="required:true,validType:'email'"
							mapping="{name: 'temail', defalut: 'd_value', handler: doHandler}"></input></td>
                </tr>
				<tr>
                    <td>Language:</td>
                    <td>
                        <select class="easyui-combobox" name="language" mapping="{name: 'tlanguage', defalut: 'ar', handler: doHandler}">
							<option value="ar">Arabic</option>
							<option value="bg">Bulgarian</option>
							<option value="ca">Catalan</option>
					</td>
                </tr>
            </table>
        </form>
        <div style="text-align:center;padding:5px">
            <a href="javascript:void(0)" class="easyui-linkbutton" onclick="submitForm()">Submit</a>
            <a href="javascript:void(0)" class="easyui-linkbutton" onclick="clearForm()">Clear</a>
        </div>
        </div>
    </div>
    <script>
        function submitForm(){
			[b]var testData = Utils.resolveFromFieldsToSyncDatas('#ff', true);[/b]
		 }
        function doHandler(name, value, mapping, datas, opt){
			return value + '_dohandler';
        }
    </script>
</body>
</html>

Utils.js 代码:
    
(function(jquery, window){
	var Utils = window.Utils;
	if (Utils && Utils.ok) {
		return;
	}
	Utils = {};
	Utils.emptyFn = function(){};
	Utils.errorFn = function(msg){ alert(msg || '操作失败');};
   
	var arrayPrototype = Array.prototype,
		sliceFn = arrayPrototype.slice;
   
	var SyncData = function(data, options){
		return new SyncData.init(data, options);
	}
	
	SyncData.init = function(data, options){
		this.data = data;
		this.options = options = options || {};
		this.beforeSync = options.beforeSync || Utils.emptyFn;
		this.errorHandler = options.errorHandler || Utils.errorFn;
		this.successHandler = options.successHandler || Utils.emptyFn;
		this.syncHandler = options.syncHandler || Utils.emptyFn;
		this.postDataType = options.postDataType || 'default'; //object or default
		this.isStrTrim = options.isStrTrim === false ?  false : true;
		
		if (arguments.length > 2) {
			this.extArgs = slice.call( arguments, 2 );
		}
		return this;
	}
	
	SyncData.init.prototype = {
		
		sync: function(options) {
			jquery.extend(this, options || {});
			jquery.extend(this.options, options || {});
			
			if(!this.data) {
				alert('数据格式不对');
				return;
			}
			var reqeustData = this.converPostData();
			if(this.beforeSync(this, reqeustData, this.extArgs) === false) {
				return;
			}
			this.syncHandler.apply(this, reqeustData, function(ret) {
				try {
					var arr = ret.result.split("~");
					if(arr[0] != "S") {
						this.errorHandler.apply(this, [ret.result, ret].concat(this.extArgs));
					} else {
						this.successHandler.apply(this, [ret].concat(this.extArgs))
					}
				} catch(e) {
					this.errorHandler.apply(this, [e, ret].concat(this.extArgs));
				}
			});
		},
		
		converPostData: function() {
			var dadtas,
				data = this.data;
			if (this.postDataType == 'default') {
				dadtas = [];
				for(var attr in data) {
					if (data.hasOwnProperty(attr)) {
						dadtas.push(data[attr]);
					}
				}
			} else {
				datas = [data];
			}
			return dadtas.concat(this.extArgs || [])
		}
	}

	var easyui_fields = ["textbox","combo","combobox","combotree","combogrid","datebox","datetimebox","spinner","timespinner","numberbox","numberspinner","slider"],
		getMapping = function(mappingStr) {
			return eval('['+ mappingStr +']')[0];
		},
		formatValue = function(name, value, mapping, data ,isTrim, opt) {
			var defalutValue = mapping.defalut || '',
				handler = mapping.handler;
			value = value || '';
			value = (isTrim === false) ? value : $.trim(value);
			value = (value == '') ? defalutValue : value;
			if (mapping.handler) {
				return handler(name, value, mapping, data, opt);
			}
			return value;
			
		}
	window.Utils = {
		// mapping="{name: 'propertyname', defalut: '123', hander: fn}" 
		resolveFromFieldsToSyncDatas: function(jq, isTrim) {
			var data = {},
				fetchValue = function(dom, inputvalue, mappingsetting, opt) {
					var pname = (mappingsetting.name || $(dom).attr('name') || $(dom).attr('id'));
					var realValue = formatValue(pname, inputvalue, mappingsetting, data, true, opt);
					if (typeof realValue === "string") { // string
						data[pname] = realValue;
					} else { //obj
						for (var nv in realValue) {
							data[nv] = realValue[nv];
						}
					}
				};
			if ($(jq).form('validate') !== true) {
				alert('表单数据验证失败');
				return null;
			}
			$.each(easyui_fields, function(i, v){
				var selector = '.easyui-' + v + ':not(:disabled)[mapping]';
				$(jq).find(selector).each(function(){
					fetchValue(this, $(this)[v]('getValue'), getMapping($(this).attr('mapping')), 'get');
				})
			});
			$(jq).find('input:hidden[mapping]').each(function(){
					fetchValue(this, $(this).val(), getMapping($(this).attr('mapping')), 'get');
			})
			return new SyncData(data);
		},
		
		resolveFromSyncDatasToFields: function(jq, data) {
			var getRealValue = function(dom, mapping) {
				var pname = (mappingsetting.name || $(dom).attr('name') || $(dom).attr('id'));
				return formatValue(pname, (data[pname] || ''), mapping, data, false, 'set') || '';
			}
			data = data || {};
			$.each(easyui_fields, function(i, v){
				var selector = '.easyui-' + v + ':not(:disabled)[mapping]';
				$(jq).find(selector).each(function(){
					$(this)[v]('setValue', getRealValue(this, getMapping($(this).attr('mapping'))));
				})
			});
			$(jq).find('input:hidden[mapping]').each(function(){
				$(this).val(getRealValue(this, getMapping($(this).attr('mapping'))));
			})
		}
	}
	Utils.ok = true;
	jquery.extend(Utils, window.Utils);
})(jQuery, window)

分享到:
评论

相关推荐

    EasyUI 另一种form提交方式

    由于EasyUI自带的Form提交方式会自动去除掉readonly和disabled的值,或者多层form时,不能正确获取到form表单中的数据,由此,产生了这个专门针对EasyUI form的提交工具。

    jQueryEasyUI1.3.6.rar工具包

    总的来说,jQuery EasyUI 1.3.6工具包为前端开发者提供了一个强大的工具集,能够帮助他们快速构建功能丰富的、具有专业外观的Web应用。通过深入学习和实践,你可以提升你的前端开发技能,并在项目中充分利用这个框架...

    EasyUI tutorial 中文版 chm

    easyUI 自定义window工具 easyUI window和布局 easyUI 创建Dialog对话框 easyUI Dialog自定义Toolbar和button Tree easyUI 从标记创建Tree easyUI 创建异步Tree easyUI 附加tree节点到tree easyUI ...

    easyui开发工具及文档

    10. **文档和示例**:"easyui开发工具及文档"中通常会包含完整的API参考、示例代码以及使用教程,帮助开发者快速上手和深入学习EasyUI。 综上所述,EasyUI 是一个强大而全面的前端框架,它简化了前端开发工作,让...

    jQuery EasyUI 扩展(tip和form)

    总之,jQuery EasyUI 提供的 Tip 和 Form 扩展功能是前端开发的重要工具,它们简化了 UI 构建和用户交互的设计,同时也为开发者提供了丰富的自定义选项,以满足多样化的项目需求。通过深入学习和实践,你可以充分...

    jqueryEasyUI

    总的来说,jQuery EasyUI 是一款强大的前端开发工具,通过它,开发者可以轻松实现界面的快速搭建,提高开发效率,同时保持良好的用户体验。在实际项目中,熟练掌握 jQuery EasyUI 的使用技巧和 API,对于提升工作...

    easyUI的小demo

    2. **表格(Grid)**:表格组件是数据展示的重要工具,EasyUI的表格支持分页、排序、过滤、编辑等功能,可以轻松地与后台数据库进行交互。通过查看demo,你可以学习到如何设置列宽、定义操作列以及处理行选中事件。 ...

    easyui小案例

    2. **表单(form)**:表单组件是进行数据编辑和输入的主要工具。在增、删、改操作中,EasyUI的form通常与dialog配合使用,弹出一个窗口供用户输入或修改数据。 3. **对话框(dialog)**:dialog在EasyUI中常用于...

    全套EasyUI示例源码

    - **数据展示组件**:如表格(datagrid)、树形视图(tree)和表单(form),用于显示和操作大量数据。 - **导航组件**:如菜单(menu)、工具栏(toolbar)、导航条(navbar)和面包屑(breadcrumb),提供页面...

    easyui_stepbnd_easyui_源码

    1. **组件库**:EasyUI提供了多种UI组件,如数据网格(datagrid)、对话框(dialog)、表单(form)、菜单(menu)、面板(panel)等,这些都是构建Web应用的基础。 2. **数据绑定**:通过AJAX和JSON,EasyUI可以...

    easyui1.7中文api

    - **表单(Form)**:提供了一种组织和管理输入控件的方式,可以进行数据验证和提交。 - **菜单(Menu)**:创建下拉菜单或水平菜单,方便用户导航和操作。 - **树形结构(Tree)**:呈现层次结构的数据,支持...

    jquery-easyui.zip_easyui框架_html 框架_jquery-easyui

    EasyUI 是一个基于 jQuery 的轻量级前端框架,它为...通过深入研究这个压缩包中的内容,开发者可以提升在前端开发领域的技能,特别是对于那些希望快速构建高效、美观用户界面的项目来说,EasyUI是一个非常实用的工具。

    Jquery EasyUI 页面框架Demo

    2. 数据表格(Data Grid):EasyUI的数据表格组件是一种强大的数据展示工具,它可以与服务器进行数据交互,支持排序、分页、过滤等功能。在Demo中,我们可能会看到如何使用`&lt;table&gt;`标签配合`easyui-datagrid`类来...

    jQuery EasyUI 1.4 离线简体中文API文档 含完整开发工具包+皮肤+扩展+演示

    (题外话:从本次开始 我新增了jQuery EasyUI的专题...filebox:filebox 该组件表单元素中用于上传文件的文件框工具组件 "&gt;(题外话:从本次开始 我新增了jQuery EasyUI的专题页面 大家可以关注我的专题页来及时获取

    easyUI easyUI1.4

    1. **组件丰富**:EasyUI提供了诸如面板(Panel)、窗口(Window)、表格(Grid)、下拉框(ComboBox)、树形控件(Tree)、表单(Form)等多种常见的Web界面元素,这些组件可以直接用于快速构建复杂的用户界面。...

    easyui

    EasyUI的`form()`方法用于验证表单,`serialize()`用于将表单数据序列化为URL编码格式,然后通过AJAX发送到服务器。 总的来说,EasyUI 提供了丰富的组件和简洁的API,帮助开发者快速构建现代Web应用程序的界面,...

    jquery-easyui资料和文档

    在jQuery EasyUI中,你可以找到诸如窗口(Window)、面板(Panel)、表格(Grid)、下拉菜单(Menu)、表单(Form)、按钮(Button)、树形结构(Tree)、滑块(Slider)等多种UI元素。这些组件都具有高度可定制性和...

    easyUi

    1. **EasyUI 组件**:EasyUI 提供了多种组件,如 Dialog(对话框)、Grid(表格)、Form(表单)、Tree(树形结构)、Menu(菜单)等,这些都是构建企业级 Web 应用的基础元素。理解这些组件的使用方法和属性配置,...

    jquery easyui 和easyui帮助手册

    EasyUI 的核心在于它的组件系统,这些组件包括对话框(dialog)、表格(datagrid)、表单(form)、菜单(menu)、按钮(button)等。每个组件都有丰富的配置选项和方法,可以进行自定义以满足各种需求。例如,...

    easyui管理后台,修改样式为bootstrap

    - **表单**:EasyUI的`form`元素可能需要调整以适应Bootstrap的`form-group`和输入控件的样式。 3. **JavaScript集成**: - EasyUI的许多功能依赖于jQuery,而Bootstrap也基于jQuery,所以大部分功能可以直接使用...

Global site tag (gtag.js) - Google Analytics