• 一款jquery小插件:实现轻松获取和绑定编辑表单的值(带源码)


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

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

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

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

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

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

    主要扩展代码:

    (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 = 0; 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 = 1, Name = "汉族" };
                Nationality n2 = new Nationality() { Code = 2, Name = "回族" };
    
                Nation.Add(n1);
                Nation.Add(n2);
    
                return Nation;
            }
            private Users GetUser()
            {
                Users users = new Users()
                {
                    ID = 1,
                    Email = "jackandmary@qq.com",
                    Name = "jack",
                    Pass = "123",
                    Sex = 1,
                    IsUse = false,
                    NationType = 2
                };
                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个多小时,完成了一部分,以后再往更深层次优化吧,希望可以为一些新手朋友带来一点帮助!

          

     源码下载

  • 相关阅读:
    安装VMware Tools选项显示灰色的正确解决办法
    Other UltraISO 软碟通注册码
    Linux平台Boost 1.6.7的编译方法
    hyper-v显示分辨率如何自动调整
    Ubuntu 14.04下超级终端Minicom连接ARM(转)
    Ubuntu 17.10安装VirtualBox 5.2.2 及相关问题解决
    ffmpeg fails with error "max delay reached. need to consume packet"
    Unity Shader 屏幕后效果——边缘检测
    C++ STL vector容量(capacity)和大小(size)的区别
    Unity影响渲染顺序因素的总结
  • 原文地址:https://www.cnblogs.com/renzaijianghu/p/3456836.html
Copyright © 2020-2023  润新知