实现目的:通常在项目中,编辑页面在前后台需要一个一个框赋值,取值操作,小伙伴们普遍都会感觉繁琐,麻烦.;

实现思路:利用json对象化键值的思想;

好处:方便快速开发,提高开发效率,减少重复性代码;

缺点:还不完善,只支持文本框,复选框,下拉框几种控件;

根本原因:纯粹是为了学习与交流;

示例:只要传一个对象即可获得和给下面的控件赋值;

aaarticlea/png;base64,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" alt="" />

主要扩展代码:

(function ($) {
$.fn.setValues = function (options) {
var obj = JSON.parse(options);
$("input[type='text'][datakey]").each(function () {
$this = $(this);
$this.val(obj[$this.attr("datakey")]);
});
$("input[type='checkbox'][datakey]").each(function () {
$this = $(this);
$this.attr("checked", obj[$this.attr("datakey")]);
});
$("select[datakey]").each(function () {
$this = $(this);
$nationtype = obj[$this.attr("datakey")];
var str = "";
$this.find("option[value='" + $nationtype + "']").attr("selected", true);
});
}
$.fn.getValues = function () {
var objValues = new Object();
$("input[type='text'][datakey]").each(function () {
$this = $(this);
objValues[$this.attr("datakey")] = $this.val();
});
$("input[type='checkbox'][datakey]").each(function () {
$this = $(this);
objValues[$this.attr("datakey")] = $this.attr("checked") == "checked" ? true : false;
});
return JSON.stringify(objValues);
}
})(jQuery);

测试页面代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="FormEditor.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>FormEditor.Demo</title>
<script src="Scripts/ajaxhelper.js"></script>
<script src="Scripts/jquery-1.9.1.js"></script>
<script src="Scripts/formEditor.js"></script>
<script>
$(document).ready(function () {
ajaxmethod('Handler/UsersHandler.ashx?actiontype=getnations', function (data) {
var $obj = JSON.parse(data);
$("select[datakey]").each(function () {
$this = $(this);
var str = "";
for (var i = ; i < $obj.length; i++) {
$objson = $obj[i];
str += "<option value='" + $objson["Code"] + "'>" + $objson["Name"] + "</option>";
}
$this.append(str);
});
ajaxmethod("Handler/UsersHandler.ashx?actiontype=getusers", function (data) {
//通过插件方法赋值-参数为json对象
$(this).setValues(data);
});
});
//通过插件方法取值-获得的结果为json对象
//getValues();
});
function getValues() {
return alert($(this).getValues());
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div class="formeditor">
用户名:<input id="Text1" type="text" datakey="Name" /><br />
<br />
&nbsp; 密码:<input id="Text2" type="text" datakey="Pass" /><br />
<br />
&nbsp; 邮箱:<input id="Text3" type="text" datakey="Email" /><br />
<br />
&nbsp; 启用:<input id="Text4" type="checkbox" datakey="IsUse" /><br />
民族:<select id="sel1" datakey="NationType"></select>
<%-- &nbsp; 性别:<input id="Radio1" type="radio" datakey="rdoMale" />男
<input id="Radio2" type="radio" datakey="rdoFeMale" />女<br />--%>
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;
<input id="btnSave" type="button" value="保存" /><br />
</div>
</form>
</body>
</html>

Hanlder.ashx 文件代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Newtonsoft.Json; namespace FormEditor.Handler
{
/// <summary>
/// UsersHandler 的摘要说明
/// </summary>
public class UsersHandler : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string actiontype = context.Request.QueryString["actiontype"];
switch (actiontype)
{
case "getusers":
context.Response.Write(JsonConvert.SerializeObject(GetUser()));
break;
case "getnations":
context.Response.Write(JsonConvert.SerializeObject(GetNations()));
break;
default:
break;
}
}
private List<Nationality> GetNations()
{
List<Nationality> Nation = new List<Nationality>();
Nationality n1 = new Nationality() { Code = , Name = "汉族" };
Nationality n2 = new Nationality() { Code = , Name = "回族" }; Nation.Add(n1);
Nation.Add(n2); return Nation;
}
private Users GetUser()
{
Users users = new Users()
{
ID = ,
Email = "jackandmary@qq.com",
Name = "jack",
Pass = "",
Sex = ,
IsUse = false,
NationType =
};
return users;
} public bool IsReusable
{
get
{
return false;
}
}
}
}

实体类代码:

public class Users
{
public Users() { }
public int ID { get; set; }
public string Name { get; set; }
public string Pass { get; set; }
public int Sex { get; set; }
public string Email { get; set; }
public bool IsUse { get; set; }
public int NationType { get; set; }
} public class Nationality
{
public int Code { get; set; }
public string Name { get; set; }
}

说明:暂时就多说了。

PS:楼主技术积累比较浅,但是一直保持着浓厚的兴趣,现在纠结的是对jquery的源码基本不懂,想要研究却不知道从哪里下手,再摸索。

这个功能很简单,但是楼主还是从0点开始到现在花了4个多小时,完成了一部分,以后再往更深层次优化吧,希望可以为一些新手朋友带来一点帮助!

源码下载

一款jquery小插件:实现轻松获取和绑定编辑表单的值(带源码)的更多相关文章

  1. jQuery form插件的使用--用 formData 参数校验表单,验证后提交(简单验证).

    Form Plugin API 里提供了很多有用的方法可以让你轻松的处理表单里的数据和表单的提交过程. 测试环境:部署到Tomcat中的web项目. 一.引入依赖js <script src=& ...

  2. jQuery form插件的使用--使用 fieldValue 方法校验表单

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  3. 【jQuery EasyUI系列】 创建展开行明细编辑表单的CRUD应用

    当切换数据网络格局(datagrid view)到detailview,用户可以展开一行来显示一些行的明细在行下面,这个功能允许您为防止在明细行面板中的编辑表单提供一些合适的布局. 步骤1.在HTML ...

  4. 推荐几款jQuery表格插件

    平时项目中,会碰到很多表格元素,这里推荐几款jQuery表格插件. Stackable.js 通常在小屏幕上,表格的表形形式不大好,因为用户会缩放平移,或者就是表格太小,导致数据不可见.Stackab ...

  5. 黑色半透明镂空遮罩指引效果实现jQuery小插件

    /*! * by zhangxinxu(.com) 2017-05-18 * 新版上线时候的黑色半透明镂空遮罩指引效果实现jQuery小插件 * 兼容到IE8+ * MIT使用协议,使用时候保留版权 ...

  6. 基于HTML5 audio元素播放声音jQuery小插件

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1609 一.前面的些唠 ...

  7. Slick – 这是你需要的最后一款 jQuery 传送带插件

    slick 是一款完全响应式的 jQuery 传送带插件,能够根据容器自动适应宽度.在现代浏览器中会使用 CSS3 来实现特殊效果,可以使用扩展方法对项目进行添加.删除和过滤.这是你需要的最后一款 j ...

  8. 用jQuery获取表单的值

    在日常开发过程中,有许多用到表单的地方.比如登录,注册,比如支付,填写订单,比如后台管理等等. 使用jQuery来获取表单的值是比较常见的做法. 常见表单 单行文字域:<input type=' ...

  9. 利用jquery.validate以及bootstrap的tooltip开发气泡式的表单校验组件

    表单校验是页面开发中非常常见的一类需求,相信每个前端开发人员都有这方面的经验.网上有很多成熟的表单校验框架,虽然按照它们默认的设计,用起来没有多大的问题,但是在实际工作中,表单校验有可能有比较复杂的个 ...

随机推荐

  1. 分布式基础通信协议:paxos,totem和gossip

    转:http://blog.csdn.net/cloudresearch/article/details/23127985 背景: 在分布式中,最难解决的一个问题就是多个节点间数据同步问题.为了解决这 ...

  2. 我所理解的 KMP(Knuth–Morris–Pratt) 算法

    假设要在 haystack 中匹配 needle . 要理解 KMP 先需要理解两个概念 proper prefix 和 proper suffix,由于找到没有合适的翻译,暂时分别称真实前缀 和 真 ...

  3. 一段SQL代码的压缩:从974行到96行,十倍压缩

    涉及到数据库拆分,需要将相关表的JOIN SQL剥离. 剥离过程中,发现了这么个SQL XML.整个SQL 974 行,分为6个函数.读起来费劲无比. <?xml version="1 ...

  4. weekend110(Hadoop)的 第三天笔记

    (2015年1月17日) 课程目录 01-hdfs源码跟踪之打开输入流 02-hdfs源码跟踪之打开输入流总结 03-mapreduce介绍及wordcount 04-wordcount的编写和提交集 ...

  5. 小物件之select单选下拉列表

    有时候在控制器中做了一个数组 然后需要在模板view中循环 同时还需要判断是否有选中的值,就会造成很多开始闭合标签 以前都是这样写 这样实在太繁琐了,不如封装一个小物件 封装函数如下: 代码如下: f ...

  6. mysql按字段分组并获取每个分组按照某个字段排序的前三条

    这是原始数据 想按照brand_id分组 并获取每个分组total_num最高的前3位 SQL语句为: > (select count(*) from data where brand_id = ...

  7. SAP ABAP 日期相关函数

    获的两个日期之间的分钟数 data min TYPE i. CALL FUNCTION 'DELTA_TIME_DAY_HOUR' EXPORTING T1 = ' T2 = ' D1 = ' D2 ...

  8. 关闭对话框,OnClose和OnCancel

    我们知道,在对话框中,屏蔽ESC键自己主动退出能够选择重载OnCancel为哑函数的方法: void CXXXXDlg::OnCancel()      {         // TODO: Add ...

  9. WCF学习心得--客户端获取服务端自定义类数据

    因项目需求,需要一个WCF服务,赶鸭子上架吧!下面直接切入正题! 首先创建WCF应用程序,具体如何创建就不赘述了,网上一大篇,我主要说说自己遇到的问题 问题一:超时问题,在最后获取数据的时候突然提示服 ...

  10. Oracle约束操作

    约束的概念: 约束是在表中定义的用于维护数据库完整性的一些规则.通过为表中的字段定义约 束,可以防止将错误的数据插入到表中. 注意: 1.如果某个约束只作用于单独的字段,既可以在字段级定义约束,也可以 ...