最近整了一一些表单类的移动页面,遇到了一个省市区的联动选择,本来想着用公用库里面的以前pc端的省市区选择组件,但是发现pc端的效果在手机端用效果太不理想,设计没给出具体的设计效果,只好自己整了select原生的省市区选择效果,样式使用手机自带的效果,感觉样式效果凑合还能用,数据还是用的pc的数据,只是把组件的给重写了一下,代码效果如下:
var $ = require('jquery'),
$window = $(window),
data = require('./data-new'),
$doc = $(document);
var __DEFAULTS__ = {
wrap:'',
itemName: ['省', '市', '区/县'],
items: ['province', 'city', 'area'],
callback: function(field, index) {} // 点击切换得时候才会执行
};
function Area(options){
options = $.extend({}, __DEFAULTS__, options);
var that = this;
that.wrapper = $(options.wrap);
that.selectArr = that.wrapper.data('default')"#default-area");
var validval = that.default!==undefined"'+itemname+'">'+(that.default === undefined "'+itemname+'" selected ="selected">'+that.itemName[that.index]+'</option> ' : '');
for (var k in data) {
html += '<option value ="'+ data[k].id +'"'+(selectId === data[k].id "selected"' : '')+'>' + data[k].name + '</option>';
}
html += '</select>';
return html;
},
//设置初始值
setValue:function(){
var that = this,
html = '';
$.each(that.selectArr,function(index,k){
that.index = index;
html += that.createItems(that.items[index],that.getData(that.items[index],that.selectArr[index-1]),k);
})
that.wrapper.append(html)
},
//获取数据
getData: function(type, pid) {
if (type === 'province') {
return data.provinces || []; // 省份信息不需要pid
}
if (type === 'city') {
return data.cities[pid] || [];
}
if (type === 'area') {
return data.areas[pid] || [];
}
},
//获取select索引值
getItemIndex:function(type){
var that = this;
for(var i= 0,l = that.items.length;i<l;i++){
if(that.items[i] == type){
return i;
}
}
},
//触发change时候,select下一位值重新初始化
setItemVal:function(select){
var that = this;
var $this = select,
previd = $this.val(),
$type =$this.attr('name'),
$nxtType = '';
if($type!='area'){
$nxtType = that.items[that.getItemIndex($type)+1];
var data = that.getData($nxtType,previd),
html = that.createItems($nxtType,data,previd),
nextSelect = $('select[name="'+$nxtType+'"]');
if($this.siblings('select[name="'+$nxtType+'"]').length>0){
nextSelect.remove();
}
$this.after(html);
nextSelect.find('option:first').prop('selected',true);
$('select[name="'+$nxtType+'"]').trigger('change');
} else{
that.validinput.val($this.val()).trigger('validate')
}
that.index = that.getItemIndex($type);
//触发change后可以设置回调函数
if (that.callback) {
that.callback.call(this, select, that.getItemIndex($type));
}
},
events:function(){
var that = this;
//select change事件
$doc.on('change','.area-container select',function(){
that.setItemVal($(this));
})
}
}
module.exports = Area;
html代码:
复制代码 代码如下:<input type="hidden" name="defaultArea" value="" id="default-area" > //必填项,为了添加验证触发验证用
<div class="area-container" data-default=""></div>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“js select实现省市区联动选择”评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2025年10月28日
2025年10月28日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]