/* * 表单填充数据插件 * 江鸿宾(QQ33080907) * 最近修改:2019.04.21 * 本插件只用于作者参与的项目,未经许可请勿转载 */ // 用法: // $('form').formfill(json) /* global UE */ (function ($) { 'use strict' $.fn.formfill = function (json) { if ($.type(json) === 'string') { // JSON字符串中需要进行替换操作:json.replace(/\n/g,'').replace(/\"/g,'\\"'),否则无法转换 json = JSON.parse(json) } // 如果传入的json对象为空,则不做任何操作 if (!$.isEmptyObject(json)) { // console.log(json) return this.each(function () { $(this).find('input[name],select[name],textarea[name]').each(function () { var $this = $(this) var tag = this.tagName.toLowerCase() var name = $this.attr('name').toLowerCase() var v = json[name] // 有这个值才操作 if (v !== null && typeof (v) !== 'undefined') { v = v.toString() if (v === '') { return } if (tag === 'input') { var type = $this.attr('type').toLowerCase() // 单选 if (type === 'radio') { $this.prop('checked', $this.val() === v) } // 多选 else if (type === 'checkbox') { var value = $this.val() if ((',' + v + ',').indexOf(',' + value + ',') >= 0) { $this.prop('checked', true) } else { $this.prop('checked', false) } } // 日期格式 else if (type === 'date') { this.valueAsDate = new Date(Date.parse(v)) } // AmazeUI日期选择框 else if (this.hasAttribute('data-am-datepicker')) { $this.datepicker('setValue', v) } // 单行文本 else { $this.val(v) } } // UEditor else if ($(this).hasClass('ueditor')) { var ue = UE.getEditor($(this).data('id')) ue.ready(function () { ue.setContent(v) }) } // 富文本编辑器 else if ($this.hasClass('editor')) { var id = $this.data('editor') var txt = v.replace(/\\n/g, '') // wangEditor异步取新浪表情会导致id未定义 if (editor[id]) { editor[id].txt.html(txt) } else { $this.val(txt) } } // 下拉列表 else if (tag === 'select') { // 多选下拉 if (this.hasAttribute('multiple')) { $this.val(v.split(',')) } // AmazeUI单选下拉组件 else if (this.hasAttribute('data-am-selected')) { $this.val(v).trigger('changed.selected.amui') } // 普通单选下拉(data给链式下拉使用,change为了visibly插件初始化) else { $this.val(v).data('value', v).trigger('change') } } // 多行文本 else { $this.val(v.replace(/\\n/g, '\n')) autosize.update(this) } } }) }) } } })(jQuery)