layer弹出层使用之select标记

来源:互联网 发布:淘宝店如何提升销量 编辑:程序博客网 时间:2024/06/06 02:21

layer前端框架,追求极简,喜欢的风格。好看是好看,用起来比较dt,,,,,

今天打算写一个通用的方法:通过ajax请求后台数据,显示在select下拉列表里面。

下面是这个方法:

url:请求的路径
id:要加载数据的select 元素的id.
objName:返回的json对象里的数据名  比如返回的是{msg:'ok',rows:[{'id':1,text:'111'},{id:'2',text:'222'}]} 则应该传入'rows'作为参数
textName:表示对象里面哪个字段作为显示的内容 此处为 'text'
valueName:表示对象里面哪个字段作为select的 value属性值
config:传入的参数
func:回调函数
selValue:下拉列表默认选中的值

function loadSelector(url, id, objName, textName, valueName, config,func,selValue) {$.post(url,config,function(data) {if (data.msg == "OK") {if (data[objName] && data[objName].length > 0) {var $selector = $('#'+id);var rows = data[objName];for ( var row in data[objName]) {
$selector.append('<option value="'+rows[row][valueName]+'" '+(selValue==(rows[row][valueName]+'')?'selected':'')+'>'+ rows[row][textName]
}
}
}
})
}
var form;function callback(){form.render();}layui.use([ 'form','element', 'layer' ], function() {window.element = layui.element(); // 导航的hover效果、二级菜单等功能,需要依赖element模块window.layer = layui.layer;form = layui.form();loadSelector(basePath + '/admin/message/list', 'city', 'rows', 'content','id', {},callback,'52');
}
此方法写好之后,怎么也显示不出来,后来打开调试模式发现,layer将我的select(A)隐藏了,用其他元素(B)替换了,所以在加载select之后,只改变了隐藏的A,却没有改变显示的B,这时就丫悲剧了,还得自己改?看了一下官网的文档,这说明也忒少了点儿吧。。千辛万苦找到一个省市级联动的例子,就是它了。看里面有一个layui.use(['form'],function(){}) 用于加载form模块,否则自己的表单元素不会显示正确,在回调函数里面有form=layui.form();方法,用于获取layui的form对象。而这个方法是通过回调,也就是异步的,不能保证回调的时间是否在使用form对象的的前面,所以要在form加载完成的回调函数里面写form.render()渲染表单元素。主要注意问题就是:

1、select在layui表单里面会被layui自带样式元素替代,而原来的会被隐藏

2、使用layui加载模块时,回调函数是异步的,不一定在你使用时候就已经准备好了。

                                             
0 0
原创粉丝点击