【分享】 纯 js 表单控件 —— 让 “增改查” 更轻松!

  我们在做增删改查的时候,必可避免的要做表单,那么表单是怎么弄出来的呢?拖拽控件、手写、js创建还是第三方控件(包括js版)? 以前用服务器控件写了一套表单控件,用起来感觉也挺方便的,只是效率太低,太占用服务器的资源。想了好久也没想到如何提高效率,最后改成了纯js版的。

  js属于初学,代码还很简陋,大家见笑了。现在是越学习js,越是感到js的强大!

 

需求、目的:
1、 在前台网页,使用js自动创建表单
2、 可以控制表单里的控件类型,比如文本框、下拉列表框、在线编辑器等。
3、 可以获取用户输入的数据,可以进行验证
4、 可以进行排版
5、 修改数据时,可以把原有数据绑定到表单。

实现方式:
1、 js + json + 第三方js脚本、控件
2、 json对表单进行描述,比如标题、控件类型、控件大小、下拉列表框的item如何填充等。
3、 第三方脚本实现复杂功能,比如选择日期、在线编辑、数据验证等。
4、 Js脚本根据json的描述,创建表单(table形式),创建表单里面的控件(比如文本框),然后对表单和控件进行修饰。
5、 提取用户输入的数据,然后进行验证。然后可以用ajax的方式提交给服务器。(提交部分表单控件不负责)。

思路:
1、 对表单进行归纳总结,抽象出来几种情况。比如有多少种控件、表格有几种表现形式。
其他的还没想好怎么表达出来。

使用方式:
使用就很简单了,因为俺比较懒,所以我做的东东,第一目标就是——用着省事。
1、 引用一堆js,其中自己的只有两个,一个创建控件,一个创建表单,还有一个验证数据。

2、 写一段“引导”脚本。这个基本是c#风格,当然也可以写成js风格。看个人喜好了。

        var Nature = {};
        Nature.Controls = {};

        var form;   //表单控件

        function create() {
            $("#divForm").html("");
            //创建表单
            var formEvent = {
                divID: "divForm",
                callback: formCallback   //回调函数
            };
            form = new Nature.Controls.Form(formEvent);
            form.create();

            $("#divButton").show();

        }

        function formCallback(formState) {
            switch (formState) {
            case 401:
                //查看

                break;
            case 402:
                //添加

                break;
            case 403:
            case 408:
                //修改

                break;

            }

        }

        //获取用户输入的信息
        function getValue() {
            //验证数据
            var re = checkData();

            if (!re) {
                return;
            }

            //获取用户输入的信息,json格式,然后可以ajax提交到数据库
            var value = form.getValue("dataForm");

            //下面仅在演示时用,显示用户输入了啥。
            var meta = eval("(" + $("#json").val() + ")");
            var controlInfo = meta.controlInfo;

            var re = "";
            for (var key in value) {
                var id = key.substring(1, key.length);
                re += controlInfo[id].ColName + ":   \t" + value[key] + "\n";
            }

            $("#msg").val(re);
        }

        function checkData() {
            //自带的验证功能。
            var re = CheckForm();

            if (re == true) {
                //验证通过,查看是否有自定义的js文件的验证
                if (typeof (cuscheck) != "undefined") {
                    //有自定义的验证,执行
                    re = cuscheck();
                }
            }
            return re;
        }

 

问与答:
问:为啥重复制造轮子?
答:搜索了一下js表单控件,没有发现特出名的。当然了肯定有做好的,只是我没有发现。再有也不是完全自己写的,有很多第三方现成的js拿来用的,比如my97。

问:写这个json也太复杂了,还不如自己做个表单方便。
答:这个json确实挺复杂的,但是他不是手动写出来的,而是自动生成的。原理类似于代码生成器。所以用起来还是挺方便的。

问:一个页面能放几个表单控件?
答:大于等于一个。因为是new出来的,所以每个表单控件都可以互补干扰。只要属性没有设置错误就可以区分开。

 

问:还有其他的功能吗?
答:当然还有其他的功能,比如设置文本框 只读(readonly),设置默认值,设置帮助信息,表单布局等,这些都可以通过修改json的属性值来实现。

问:json的结构到底是啥样的?
答:这个可以看在线演示,还可以修改值来看看变化。

 

附:第三方js
1、 jQuery。这个就不多说了。
2、 my97。选择日期的,很好很强大
3、 kindereditor。选择他是因为可以直接在页面里使用。因为是纯js的表单控件,所以服务器控件形式的在线编辑器是不好用了。
4、 数据验证。这个好像有很多已经很成熟的了,只是一直没时间研究。目前用的是一个比较古老的js脚本,出处已经不记得了。

在线演示:

js版的表单控件 :http://www.naturefw.com/demo/jsform.htm  (下面是一个iframe。好像有缓存。)

 

 

不知道大家是怎么处理表单的,有兴趣的话,欢迎一起聊聊!

 

 

时间: 2024-09-30 00:28:52

【分享】 纯 js 表单控件 —— 让 “增改查” 更轻松!的相关文章

学习vue.js表单控件绑定操作_javascript技巧

本文实例为大家分享了vue.js表单控件绑定的具体代码,供大家参考,具体内容如下 html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>表单控件绑定</title> </head> <body> <!-- v-model在表单控件元素上实现数据的双向绑定 -->

Vue.js表单控件实践_javascript技巧

最近项目中使用了vue替代繁琐的jquery处理dom的数据更新,个人非常喜欢,所以就上官网小小地实践了一把. 以下为表单控件的实践,代码敬上,直接新建html文件,粘贴复制即可看到效果 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>PlayAround2 Have Fun</title> <sc

javascript表单控件实例讲解_javascript技巧

本文实例为大家分享js表单控件多个实例讲解,供大家参考,具体内容如下 实例一:遍历表单的所有控件 <script type="text/javascript"> //遍历表单的所有控件 function getValues(){ var f = document.forms[0]; //获取表单DOM var elements = f.elements; //获取所有的控件数组 var str = ''; //拼接字符串 //循环遍历 for(var i=0; i<e

Vue.js每天必学之表单控件绑定_javascript技巧

基础用法 可以用 v-model 指令在表单控件元素上创建双向数据绑定.根据控件类型它自动选取正确的方法更新元素.尽管有点神奇,v-model 不过是语法糖,在用户输入事件中更新数据,以及特别处理一些极端例子. Text <span>Message is: {{ message }}</span> <br> <input type="text" v-model="message" placeholder="edit

Bootstrap所支持的表单控件实例详解_javascript技巧

 Bootstrap所支持的表单控件如下所示: Bootstrap 支持最常见的表单控件,主要是 input.textarea.checkbox.radio 和 select. 输入框(Input) 最常见的表单文本字段是输入框 input.用户可以在其中输入大多数必要的表单数据.Bootstrap 提供了对所有原生的 HTML5 的 input 类型的支持,包括:text.password.datetime.datetime-local.date.month.time.week.number.

jQuery操作DOM之获取表单控件的值_jquery

本文实例讲述了jQuery操作DOM之获取表单控件的值.分享给大家供大家参考.具体分析如下: HTML属性与DOM属性差别最大的地方,恐怕就要数表单控件的值了.比如,文本输人框的 value属性在DOM中的属性叫defaultValue,DOM中就没有value属性.而选项列表(select) 元素呢,其选项的值在DOM中通常是通过selectedIndex属性,或者通过其选项元素的 selected属性来取得. 由于存在这些差异,在取得和设置表单控件的值时,最好不要使用.attr()方法.而对

能自己“跑”的表单控件,思路,雏形,源码。vs2005版本

下载地址: http://www.cnblogs.com/jyk/archive/2008/07/29/1255891.html 大家是怎么处理CRUD的呢? 这里说一下添加.修改数据.     一大堆的表,n多的字段,经常变化的表现形式(比如文本框换成下拉列表框等),是不是很头痛?反正我是很烦的,因为我太懒了,对于这种不是太重要的,但是有很繁琐的东东,我总是要向出来一种"简单"的方式来处理.     怎么办?表单控件,我还一直使用VS2003,没有VS2005里面的表单控件,所以只好

【自然框架】之鼠标点功能现(二):表单控件的“应用”—— 代码?只写需要的!

    [自然框架]之鼠标点功能现(一):单表的增删改查(即上次5月23日活动的一个主题)[Demo.源码下载]           看了大家的回复,好像不少人误会了,我为了突出"鼠标点,功能现",所以没有说代码,没有贴代码,这就让一些人认为我想要完全抛弃VS,自己写一个"平台"来代替,不好意思,您高估我了,我可达不到.我只是想"简单的事情点鼠标就可以了,复杂的事情就要写代码了".         还是举例子吧.比如说上次里的[表8:添加列表信息

假乱真的表单控件:美化原生表单控件

文章描述:这样的模拟需要在兼顾实现设计的同时,还要保证网站的性能和可用性.这时我不禁开始怀念那些看起来平凡却非常实用的原生表单控件.如果用他们几乎可以解决以上所有问题. 在互联网成熟的今天,大家对网站的要求不仅仅在功能实现上,也开始注重视觉设计,多终端用户体验等等.表单控件是web页面上重要的组成元素,具有非常高的功能性.交互设计师为它设计更加方便的操作方式,视觉设计师也会绞尽脑汁设计出更加夺人眼球的视觉展现.可是由于表单控件自身的局限性,不能很好地自定义外表,所以就诞生了一系列的由聪明的前端同