input文本域中的json字符串格式数据获取和设置方法

2018年06月09日 阅读325次 分类:资源 标签:js微码

版权声明:本文为博主原创或转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:http://www.zhuyanjun.cn/resource/1168.html

有时候我们需要在一个隐藏域中,放入一个json数据,这个时候操作这些数据就比较麻烦。下面是我写的一个方法,仅供参考:

/**
 * 
 * @param $input 文本域的jquery对象
 * @param data 要插入的值,为null时表示删除
 * @param index 索引,例如inputJsonOperation.get([{bar:{name:'姓名',sex:'男'},box:true},{...},...], '0.bar.name');
 * @param defaultValue 默认值,未找到默认返回 undefined
 * @returns {any}
 */
var inputJsonOperation = {
    get:function($input,index,defaultValue){
        var _data = $input.val();
        if(!_data){
            return defaultValue;
        }else{
            _data = JSON.parse(_data);
        }
        
        if(typeof index !== "undefined" && index !== null && index !== ''){
            if(typeof index !== 'string') index = String(index);
            var _tmp = _data;
            $.each(index.split('.'),function (i,n) {
                var strNumber = Number(n);
                if (!isNaN(strNumber)) n = strNumber;
        
                if(typeof _tmp[n] === 'undefined'){
                    _data = defaultValue;
                    return false;
                }
                _tmp = _tmp[n];
            });
            if(_data!== undefined) _data = _tmp;
        }
        
        return _data;
    },
    set:function($input,data,index){
        if(data !== null && $.isEmptyObject(data)){
            $input.val('');
            return true;
        }
        
        if(typeof index !== "undefined" && index !== ''){
            if(typeof index !== 'string') index = String(index);
            var _oldData = this.get($input),
                _stringOldData = '_oldData',
                _tmp = _oldData;
            $.each(index.split('.'),function (i,n) {
                var strNumber = Number(n);
                if (!isNaN(strNumber)){
                    _stringOldData += '['+strNumber+']';
                    n = strNumber;
                }else{
                    _stringOldData += '["'+n+'"]';
                }
        
                if(typeof _tmp[n] === 'undefined'){
                    return false;
                }
                _tmp = _tmp[n];
            });
        
            if(data === null){
                _stringOldData = _stringOldData.split('[');
                var lastIndex = _stringOldData[_stringOldData.length-1].replace(']','');
                _stringOldData.splice(_stringOldData.length-1,1);
                _stringOldData = _stringOldData.join('[');
        
                var _isArray = false;
                eval("_isArray = $.isArray("+ _stringOldData +")");
                if(_isArray){
                    _stringOldData = _stringOldData + '.splice(lastIndex,1)';
                }else{
                   _stringOldData = 'delete '+ _stringOldData + '['+lastIndex+']';
                }
            }else{
                _stringOldData += '= data';
            }
        
            eval(_stringOldData);
        
            data = _oldData;
        
        }
        if(!$.isArray(data)) data = [data];
        
        $input.val(data.length < 1?'':JSON.stringify(data));
    }
}


(本篇完)

是不是学到了很多?可以

版权声明:本文为博主原创或转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:http://www.zhuyanjun.cn/resource/1168.html