自封装js

做项目的时候老师自己封装了一个js来用,这个是jQuery根据对象填充form表单的。页面头部是这个样子的:

/**
 * jquery 根据json对象填充form表单
 * @author en
 * @param fromId form表单id
 * @param jsonDate json对象
 */

然后就是一个function方法,不过这个方法在页面上的用法就是提交表单那一块,用的是ajaxSubmit(obj)的方法提交表单,因为如果我们直接通过from提交的话,提交后当页面跳转到from的action所指向的页面。
然而,很多时候并不希望提交后页面跳转,那么,我们就可以使用ajaxSubmit(obj)来提交数据。ajaxSubmit(obj)方法是jQuery的一个插件jquey.from.js里面的方法,所以使用此方法需要先引入这个插件。
在自做js里面就是loadDatatoForm这个,然后传参数对象进去,在方法体里面首先声明obj的变量,还有key, value, tagName, type, arr这些的值,用一个for循环,循环json对象,让key值等于一个随便起的未知数。
$("[name=’"+key+"’],[name=’"+key+"[]’]").each(function(){更加form表单id 和 json对象中的key查找 表单控件,然后可以往里面写代码。里面嵌套了很多个循环,这就要求逻辑过关,而且要有和很强大的逻辑才行,当然,如果理清了思路或者懂得如何应用的话就显得简单多了

function loadDatatoForm(fromId, jsonDate) {
    var obj = jsonDate;
    var key, value, tagName, type, arr;
    for (x in obj) {//循环json对象
        key = x;
        value = obj[x];
        //$("[name='"+key+"'],[name='"+key+"[]']").each(function(){
        //更加form表单id 和 json对象中的key查找 表单控件
        $("#" + fromId + " [name='" + key + "'],#" + fromId + " [name='" + key + "[]']").each(function () {
            tagName = $(this)[0].tagName;
            type = $(this).attr('type');
            if (tagName == 'INPUT') {
                if (type == 'radio') {
                    $(this).prop('checked', $(this).val() == value);
                } 
else if (type == 'checkbox') {
                    try {
                        //数组
                        arr = value.split(',');
                        for (var i = 0; i < arr.length; i++) {
                            if ($(this).val() == arr[i]) {
                                $(this).prop('checked', true);
                                break;
                            }
                        }
                    } 
catch (e) {
                        //单个
                        $(this).attr('checked', value);
                    }
                } 
else {
                    $(this).val(value);
                }
            } 
else if (tagName == 'TEXTAREA') {
                $(this).val(value);
            } 
else if (tagName == 'SELECT') {
                //console.log($(this).hasClass("select2"));
                if ($(this).hasClass("select2")) {
                    //select2 插件的赋值方法
                    $(this).val(value).trigger("change");
                } 
else {
                    $(this).val(value);
                }
            }
        });
    }
}

上面是总体的一个代码,其实我也不知道是什么来的,就是看得懵懵的。
但是下面的这张图呢,就是判断字符串不能为空的状态的,在这里写上的话后面页面用起来就会方便一点,就是直接引用这个插件过来就可以直接使用了。
在这里插入图片描述
在页面上就是这样判断一下代码就可以了
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值