zoukankan      html  css  js  c++  java
  • json

    利用JSON+JQ动态生成表单,可以自动验证,有不足之处望大家指点。

    (2011-08-09 12:54:24)

    转载▼

    标签: 

    it

    分类: 客户端技术相关

    利用JSON+JQ动态生成表单,可以自动验证,有不足之处望大家指点。

     

    下面是HTML代码(为了更直观我加了一个生成后的格式生成格式):

    <div class="form" ID ="Account_Form" >

       <dl>

                <dt>

                    <label>游戏账号: </label>

                    <em>*</em></dt>

                <dd>

                    <input type="text" name="js_cp_2234" id="gameAccount"    class="text" maxlength="30"value=""/><span class="right_tips" id="spn_account">请输入游戏账号</span></dd>

              </dl>

    </div>

     

    属性解释(DB - TABLE):

    STRUCT_ID:自增长的主键

    TYPE:输入类型(0文本框,1下拉框,4密码框)

    CAPTION:标题内容

    GAMEID:游戏ID(与游戏表相关联的外键)

    PROMPT:提示信息

    VERIFICATION_MODE:验证模式

    ISNULL:是否必填(0,为空,1必填)

    SELECTVALUE:下拉框VALUE,以英文逗号隔开

     

    好了,废话不多说,上代码,下面就靠自己的理解吧,可以随意变化。目前只生成文本框和下拉框。

     

    varJsonData = null;

     

    $(function () {

        $.ajax({

            type: "GET",

            url: "../TradingDirectory/ashx/AjaxHandler/AccountHandler.ashx",

           

           

            data: { _Gameid: checkUrl_code(theRequest["gameid"].toString(), false) },

            success: function (JSON) {

                var HtmlStr = "";

                ///将JSON字符串转换为JSON对象

                JsonData = eval_r('(' + JSON + ')')

                if (JsonData != "") {

                    ///加载HTML表单

                    $.each(JsonData, function (index, item) {

                        ///输出表单(下拉框)

                        if (item.TYPE == 1) {

                            HtmlStr += "<dl><dt><label>" + item.CAPTION + ":</label>";

                            ///根据JSON对象的ISNULL数值判断是否需要验证

                            if ($.trim(item.ISNULL.toString()) == '1') {

                                HtmlStr += "<em>*</em>";

                                HtmlStr += "</dt><dd><select name='' id='SelectInput_" + item.STRUCT_ID + "' onblur='isCheckInput(this," + item.STRUCT_ID + "," + item.TYPE + ")'><option value=0>请选择</option>";

                            } else {

                                HtmlStr += "</dt><dd><select name='' id='SelectInput_" + item.STRUCT_ID + "'><option value=0>请选择</option>";

                            }

                            var strArry = item.SELECTVALUE.toString().split(",");

                            for (var i = 0; i < strArry.length; i++) {

                                HtmlStr += "<option value=" + parseInt(i + 1) + ">" + strArry[i].toString() + "</option>";

                            }

                            HtmlStr += "</select>";

                            HtmlStr += "<span class='right_tips' id='spn_Select_" + item.STRUCT_ID + "'> " + item.PROMPT + " </span></dt></dl>";

                        }

                        ///输出表单(文本框/密码文本框)

                        if (item.TYPE == 0 || item.TYPE == 4) {

                            ///声明文本框类型(默认为TEXT)

                            var TxtType = "text";

                            if (item.TYPE == 4) {

                                TxtType = "password";

                            }

                            HtmlStr += "<dl><dt><label>" + item.CAPTION + ":</label>";

                            ///根据JSON对象的ISNULL数值判断是否需要验证

                            if ($.trim(item.ISNULL.toString()) == '1') {

                                HtmlStr += "<em>*</em></dt><dd><input type='" + TxtType + "' name='' id='AccountInput_" + item.STRUCT_ID + "'  onblur='isCheckInput(this," + item.STRUCT_ID + "," + item.TYPE + ")' class='text' maxlength='30' value=''/>";

                            } else {

                                HtmlStr += "</dt><dd><input type='" + TxtType + "' name='' id='AccountInput_" + item.STRUCT_ID + "'  class='text' maxlength='30' value=''/>";

                            }

                            HtmlStr += "<span class='right_tips' id='spn_Account_" + item.STRUCT_ID + "'> " + item.PROMPT + " </span></dt></dl>";

                        }

                    });

                    ///输出HTML表单

                    $("#Account_Form").html(HtmlStr);

                }

                else {

                    alert("加载表单出现异常!");

                }

            }

        });

    });

     

     

     

    functionisCheckInput(ObjinputStr, struct_Id,type) {

        var _checkResult = false;

        ///如果为文本框类型

        if (type == 0) {

            ///验证用户输入是否为空字符串

            if ($.trim(ObjinputStr.value) == "") {

                $("#spn_Account_" + struct_Id).attr("class", "error_tips");

                $.each(JsonData, function (index, item) {

                    if (item.STRUCT_ID == struct_Id) {

                        $("#spn_Account_" + struct_Id).text(item.PROMPT);

                    }

                })

                _checkResult = false;

     

            } else {

                $("#spn_Account_" + struct_Id).attr("class", "correct_tips");

                $("#spn_Account_" + struct_Id).text("");

                _checkResult = true;

            }

        }

        ///遍历表单JSON对象

        $.each(JsonData, function (index, item) {

            ///ID匹配,验证下拉框选中值

            if (item.STRUCT_ID == struct_Id) {

                var ddlist = document.getElementByIdx_x("SelectInput_" + struct_Id);

                var index = ddlist.selectedIndex;

                if (parseInt(ddlist.options[index].value) == 0) { ///为0则表示未选择

                    $("#spn_Select_" + struct_Id).attr("class", "error_tips");

                    $("#spn_Select_" + struct_Id).text(item.PROMPT);

                    _checkResult = false;

                } else {

                    $("#spn_Select_" + struct_Id).attr("class", "correct_tips");

                    $("#spn_Select_" + struct_Id).text("");

                    _checkResult = true;

                }

            }

            ///ID匹配,并且不是验证非空

            if (item.STRUCT_ID == struct_Id && item.VERIFICATION_MODE != "NOTNULL" && item.Type == type) {

                /// DB-WEB 的正则需转换为对象

                /// 原因:var patrn = new RegExp(patrn); javascript为弱类型,直接转换为对象,减少使用New

                var patrn = eval_r(item.VERIFICATION_MODE);

                if (!patrn.exec($.trim(ObjinputStr.value))) {

                    $("#spn_Account_" + struct_Id).attr("class", "error_tips");

                    $("#spn_Account_" + struct_Id).text(item.PROMPT);

                    _checkResult = false;

                }

                else {

                    $("#spn_Account_" + struct_Id).attr("class", "correct_tips");

                    $("#spn_Account_" + struct_Id).text("");

                    _checkResult = true;

                }

            }

        })

        return _checkResult;

    }

     

    functionsubFormByAccount() {

        ///声明提交验证结果

        var _resultRowCount = 0;

        ///遍历JSON自动生成表单对象,做提交验证

        $.each(JsonData, function (index, item) {

            if (item.ISNULL == 1) {

                ///文本框

                if (item.TYPE == 0) {

                    if (!isCheckInput(document.getElementByIdx_x("AccountInput_" + item.STRUCT_ID), item.STRUCT_ID, item.TYPE)) {

                        _resultRowCount++;

                    }

                }

                ///下拉框

                if (item.TYPE == 1) {

                    if (!isCheckInput(document.getElementByIdx_x("SelectInput_" + item.STRUCT_ID), item.STRUCT_ID, item.TYPE)) {

                        _resultRowCount++;

                    }

                }

            }

    });

    }

  • 相关阅读:
    Spinner使用
    5.5 easypoi模板导出excel测试Demo > 我的程序猿之路:第四十五章
    5.4 SpringCloud配置中心搭建以及问题解决 > 我的程序猿之路:第四十四章
    5.3 Spring事物管理详解 > 我的程序猿之路:第四十二章
    5.2 SpringBoot实现断点续传功能 > 我的程序猿之路:第四十二章
    5.1 java实现doc文档转pdf文件 > 我的程序猿之路:第四一章
    5.0 SpringBoot普通上传功能 > 我的程序猿之路:第四十章
    4.8 数字金额大写转换 插件 > 我的程序猿之路:第三十八章
    4.7 基于Spring注解的定时任务(@Schedule) > 我的程序猿之路:第三十七章
    4.6 基于Spring-Boot的Mysql+jpa的增删改查学习记录 > 我的程序猿之路:第三十六章
  • 原文地址:https://www.cnblogs.com/Struts-pring/p/3937842.html
Copyright © 2011-2022 走看看