MUI Picker选择器 自定义省市地址三级联动

先来个效果图展示:

mui框架扩展了pipcker组件,可用于弹出选择器,在各平台上都有统一表现.poppicker(适用于弹出单级或多级选择器)和dtpicker(适用于弹出日期选择器)是对picker的具体实现

第一步:*poppicker组件依赖mui.picker.js/.css mui.poppicker.js/.css请务必在mui.js/css后中引用,也可统一引用 压缩版本:mui.picker.min.js

jsp代码:

<div class="mui-input-row" style="height:auto; width: auto;">
<label>地址</label>
<input type="text" id="pickAddress" style="padding: 0px;margin:0px; display: block;" class="input-address mui-text-right" placeholder="请选择取件地址" />
</div>

js代码:

//綁定地址
$('.input-address').each(function(i,obj){
obj.addEventListener('tap',function(){

//初始化picker多列选择器,并以三列显示
var picker = new $.PopPicker({ layer: 3 });
picker.setData(${addressJSON});
picker.show(function(rs){
obj.value=rs[2].text;
picker.dispose();
});
},false);
});

controller层:

// 取件地址选择

public ModelAndView indexPage() {
ModelAndView modelView = new ModelAndView();

List<AddressVO> addressList = addressService.findVOListByExample();
List<PickerData> addressData = new ArrayList<>();
List<PickerData> addressData2;
String p = "";
String c = "";
for (ExpressPickAddressVO expressPickAddressVO : expressPickAddressList) {

//判断省份是否重复
if (!addressVO.getProvince().equals(p)) {
PickerData province = new PickerData(addressVO.getProvince(), addressVO.getProvince());
addressData.add(province);
p = addressVO.getProvince();
}

//判断市是否重复
if (!addressVO.getCity().equals(c)) {
PickerData city = new PickerData(addressVO.getCity(), addressVO.getCity());
addressData.get(addressData.size() - 1).addChild(city);
c = addressVO.getCity();
addressData2 = new ArrayList<>();
PickerData address = new PickerData(addressVO.getAddressId(), addressVO.getAddress());
addressData2.add(address);
city.setChildren(addressData2);
}
}
modelView.addObject("addressJSON",JSON.toJsonString(addressData));     ---------------->把addressData集合转为JSON格式返回给页面,在此我用的是fastjson

}

还有一个辅助PO 

PickerData:

public class PickerData {
private String value;
private String text;
private List<PickerData> children;

public PickerData() {
}

public PickerData(String value, String text) {
setValue(value);
setText(text);
}

public String getValue() {
return value;
}

public void setValue(String value) {
this.value = value;
}

public String getText() {
return text;
}

public void setText(String text) {
this.text = text;
}

public List<PickerData> getChildren() {
return children;
}

public void setChildren(List<PickerData> children) {
this.children = children;
}

public void addChild(PickerData data) {
if (this.children == null) {
this.children = new ArrayList<PickerData>();
}
this.children.add(data);
}
}

 

转载于:https://www.cnblogs.com/ljh-/p/9228207.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 据了解,苹果于2020年9月15日发布的iOS 14中,引入了一种叫做“特定地区设置”的新功能,该功能会根据用户所在的地理位置,限制部分应用的可用范围。在某些地区,该设置可能会影响mui.picker选择器在iPhone 12上的正常使用。 此外,苹果在12系列中进行了诸多技术和硬件方面的升级,这可能会导致mui.picker选择器未作出相应更改,无法与新的硬件设备进行兼容。因此,选择器使用者可能需要更新选择器的版本或等待厂商发布更新版本。 然而,需要注意的是,以上分析仅仅是对此问题的一种猜测,并未得到官方的确认。还需交流合作,共同解决此类问题。 ### 回答2: 据我们了解,最近在使用 mui.picker 选择器时发现苹果12无法正常选择的情况确实存在。这个问题主要出现在 iOS 14 系统上,尤其是在苹果12设备上。实际上,mui.picker 选择器是基于浮动层实现的,而由于 iOS 14 在设计上进行了调整,导致了选择器无法弹出。 如果使用mui.picker选择器无法选择的话,我们可以尝试使用其它替代方案,比如常规的HTML表单元素、jQuery、zepto插件等。如果非要使用mui.picker选择器的话,我们可以尝试将mui.picker插件更新至最新版,或者自行调整插件代码以适应 iOS 14 的设计变化。 还有一种方法是使用H5的input[type="date"],它的UI也很好看,适用于弹窗中使用。 总之,由于这个问题的根本原因是 iOS 14 系统在设计上出现了问题,因此我们只能通过调整插件代码或者使用其它解决方案来解决这个问题。希望我们的回答能够帮到你,如果还有其他问题,请随时让我们知道。 ### 回答3: mui.picker选择器是一款非常受欢迎的前端开发工具,它可以很好地实现数据选择的功能。然而,在苹果12上,用户在使用该工具时可能会发现无法正常选择数据的情况。 这主要是由于苹果12的操作系统更新,导致mui.picker选择器与操作系统之间的兼容性出现了问题。虽然该问题可能会给一些开发者带来困扰,但是这并不意味着mui.picker选择器已经不适用于苹果12了。实际上,开发者可以通过一些调试和优化的方法来解决这个问题。 首先,开发者可以尝试更新mui.picker选择器的版本,以确保它可以与最新的操作系统兼容。如果这种方法没有效果,那么开发者还可以尝试寻找其他类似的数据选择工具,如各种插件程序和组件库,来替代mui.picker选择器实现数据选择功能。当然,这些替代方案需要进行充分的测试和验证,以确保它们可以完美地和苹果12的操作系统兼容。 总之,对于苹果12上使用mui.picker选择器无法选择数据的问题,开发者可以通过更新版本、替代方案等多种方法来解决。毕竟,随着科技的日益发展,前端开发工具和技术也在不断更新和进化,做好更新和迭代将能更好地服务于用户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值