picker(选择器)
优质
小牛编辑
121浏览
2023-12-01
mui框架扩展了pipcker组件,可用于弹出选择器,在各平台上都有统一表现.poppicker和dtpicker是对picker的具体实现
*poppicker组件依赖mui.picker.js/.css
mui.poppicker.js/.css
请务必在mui.js/css后中引用,也可统一引用 压缩版本:mui.picker.min.js
popPicker
适用于弹出单级或多级选择器
快速体验
通过new mui.PopPicker()
初始化popPicker组件
var picker = new mui.PopPicker();
给picker对象添加数据
setData() 支持数据格式为: 数组 picker.setData([{value:'zz',text:'智子'}]);
显示picker
picker.show( SelectedItemsCallback )
实例
var picker = new mui.PopPicker();
picker.setData([{value:'zz',text:'智子'}]);
picker.show(function (selectItems) {
console.log(selectItems[0].text);//智子
console.log(selectItems[0].value);//zz
})
API详解
setData([data])
- 参数:data Type: Array 填充数据 如:
picker.setData([{value:'zz',text:'智子'}])
data格式
- 参数:data Type: Array 填充数据 如:
设置默认值
PopPicker
创建实例并填充数据后,可以设定每个层级的选中项,因为 PopPicker 是支持多层级联的,所以,可通过instance.pickers[index]
拿到指定层级的实例,然后通过setSelectedIndex()
和setSelectedValue()
两个方法,设定指定层级的选中项,如下代码供参考:
var picker = new mui.PopPicker();
picker.setData([{
value: "first",
text: "第一项"
}, {
value: "second",
text: "第一项"
}, {
value: "third",
text: "第三项"
}, {
value: "fourth",
text: "第四项"
}, {
value: "fifth",
text: "第五项"
}])
//picker.pickers[0].setSelectedIndex(4, 2000);
picker.pickers[0].setSelectedValue('fourth', 2000);
picker.show(function(SelectedItem) {
console.log(SelectedItem);
})
*如果设置多级默认值可依次获取每一层级Picker对象并设置默认值,如下:
var picker = new mui.PopPicker({
layer: 2
});
picker.setData([{
value: '110000',
text: '北京市',
children: [{
value: "110101",
text: "东城区"
}]
}, {
value: '120000',
text: '天津市',
children: [{
value: "120101",
text: "和平区"
}, {
value: "120102",
text: "河东区"
}, {
value: "120104",
text: "南开区"
}
]
}])
picker.pickers[0].setSelectedIndex(1);
picker.pickers[1].setSelectedIndex(1);
picker.show(function(SelectedItem) {
console.log(SelectedItem);
})
setSelectedIndex(index[, duration, callback])
- 参数:index Type: Number 指定列表选中项 如:
picker.pickers[0].setSelectedIndex(4)
- 参数:duration Type: Number 过渡效果持续时间(
ms
) 如:picker.pickers[0].setSelectedIndex(4,200)
- 参数:callback Type: FUnction 设置成功回调 如:
picker.pickers[0].setSelectedIndex(4,200,function(){})
var picker = new mui.PopPicker(); picker.setData([{ value: "first", text: "第一项", }, { value: "second", text: "第一项" }, { value: "third", text: "第三项" }, { value: "fourth", text: "第四项" }, { value: "fifth", text: "第五项" }]) picker.pickers[0].setSelectedIndex(4, 2000); picker.show(function(SelectedItem) { console.log(SelectedItem); })
- 参数:index Type: Number 指定列表选中项 如:
setSelectedValue(value[, duration, callback])
- 参数:value Type: String 指定列表选中项 如:
picker.pickers[0].setSelectedValue('fourth')
- 参数:duration Type: Number 渡效果持续时间(
ms
) 如:picker.pickers[0].setSelectedValue('fourth',200)
- 参数:callback Type: FUnction 设置成功回调 如:
picker.pickers[0].setSelectedValue('fourth', 200, function(){})
var picker = new mui.PopPicker(); picker.setData([{ value: "first", text: "第一项", }, { value: "second", text: "第一项" }, { value: "third", text: "第三项" }, { value: "fourth", text: "第四项" }, { value: "fifth", text: "第五项" }]) picker.pickers[0].setSelectedIndex(4, 2000); picker.show(function(SelectedItem) { console.log(SelectedItem); })
- 参数:value Type: String 指定列表选中项 如:
getSelectedItems()
- 返回值[data] Type: Array 获取选中的项(数组) 如:
picker.getSelectedItems()
- 返回值[data] Type: Array 获取选中的项(数组) 如:
hide()
- 隐藏picker 如:
picker.hide()
- 隐藏picker 如:
dtpicker
dtpicker组件适用于弹出日期选择器
快速体验
通过new mui.DtPicker()
初始化DtPicker组件
var dtPicker = new mui.DtPicker(options);
显示picker
dtPicker.show( SelectedItemsCallback )
实例
var dtPicker = new mui.DtPicker();
dtPicker.show(function (selectItems) {
console.log(selectItems.y);//{text: "2016",value: 2016}
console.log(selectItems.m);//{text: "05",value: "05"}
})
API详解
new DtPicker({options}})
1.参数:type
Type: JSON 设置日历初始视图模式 支持的值:
*若需要指定其他显示视图,可选值 视图模式 'datetime' 完整日期视图(年月日时分) 'date' 年视图(年月日) 'time' 时间视图(时分) 'month' 月视图(年月) 'hour' 时视图(年月日时)
则需要通过css来控制显示项,通过js获取对应选择项.如 设置月日时,需要在mui.dtpicker.css
中设置显示视图宽度,隐藏不需要的视图
在/*月日时*/ [data-type="day"] .mui-picker, [data-type="day"] .mui-dtpicker-title h5 { width: 33.3%; } [data-type="day"] [data-id="picker-i"], [data-type="day"] [data-id="title-i"],[data-type="day"] [data-id="picker-y"], [data-type="day"] [data-id="title-y"] { display: none; }
mui.dtpicker.js
中getSelected()
方法下添加selected
对象值case 'day': selected.value = selected.m.value + '-' + selected.d.value + ' ' + selected.h.value; selected.text = selected.m.text + '-' + selected.d.text + ' ' + selected.h.text; break;
2.参数:customData
Type: JSON 设置时间/日期别名 设置格式:
示例:"customData":{ "date":[ {value:"",text:""} ] }
支持的值:var dtpicker = new mui.DtPicker({ "type": "time", "customData": { "h": [ { value: "am", text: "上午" }, { value: "pm", text: "下午" }, ] } }) dtpicker.show(function(e) { console.log(e); })
*可选值 视图模式 'y' 可设置 年别名 'm' 可设置 月 别名 'd' 可设置 日别名 'h' 可设置 时别名 'i' 可设置 分别名 customData
值生效的前提需要有指定的日期视图,如设置'y',需要在视图使用'年'视图3.参数:labels
Type: Array 设置默认标签区域提示语 可设置["年", "月", "日", "时", "分"]
这五个字段,
可以根据视图模式选择设置个别标签,也可以设置所有标签,dtpicker
显示的时候只会根据当前视图显示设置项,
*建议不要设置空字符串,会影响美观哦4.参数:beginDate
Type: Date 设置可选择日期最小范围 可单独设置最小年范围, 如:beginYear:2015
,
其他日期支持Date格式,如:new Date(2016,5)
可指定最小月份6月5.参数:endDate
Type: Date 设置可选择日期最大范围 可单独设置最大年范围, 如:endYear:2017
,
其他日期支持Date格式,如:new Date(2016,10)
可指定最大月份11月- 完整示例:
var dtpicker = new mui.DtPicker({ type: "datetime",//设置日历初始视图模式 beginDate: new Date(2015, 04, 25),//设置开始日期 endDate: new Date(2016, 04, 25),//设置结束日期 labels: ['Year', 'Mon', 'Day', 'Hour', 'min'],//设置默认标签区域提示语 customData: { h: [ { value: 'AM', text: 'AM' }, { value: 'PM', text: 'PM' } ] }//时间/日期别名 }) dtpicker.show(function(e) { console.log(e); })
getSelectedItems()
- 返回值Date Type: Date 获取选中的项 如:
var iTems = dtPicker.getSelectedItems()
返回值: 如:/* * iTems.value 拼合后的 value * iTems.text * 拼合后的 text * iTems.y 年,可以通过 rs.y.vaue 和 rs.y.text 获取值和文本 * iTems.m 月,用法同年 * iTems.d 日,用法同年 * iTems.h 时,用法同年 * iTems.i 分(minutes 的第二个字母),用法同年 */
- 返回值Date Type: Date 获取选中的项 如:
show( getSelectedItems )
- 返回值:[data] Type: Array 获取选中的项(数组) 如:
*dtpicker.show(function(items) { /* * items.value 拼合后的 value * items.text 拼合后的 text * items.y 年,可以通过 rs.y.vaue 和 rs.y.text 获取值和文本 * items.m 月,用法同年 * items.d 日,用法同年 * items.h 时,用法同年 * items.i 分(minutes 的第二个字母),用法同年 */ console.log(items); })
return false;
可以阻止选择框的关闭
- 返回值:[data] Type: Array 获取选中的项(数组) 如:
hide()
- 隐藏dtPicker 如:dtPicker.hide()
扩展阅读
*picker
组件会触发webview硬件加速,在部分手机上可以能出现卡顿或变形的情况此时需要开启硬件加速,硬件加速请参考 硬件加速章节