123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506 |
- /* ============================================================
- * 地区无限
- * ============================================================ */
- !function($) {
- var backdropLayerTpl = '<div class="modal_backdrop fade"></div>';
- var htmlLayerTpl = ['<div class="modal qs-category-unlimited def">', '<div class="modal_dialog">', '<div class="modal_content pie_about">', '<div class="modal_header">', '<span class="title J_modal_title"></span>', '<span class="max_remind J_modal_max"></span>', '<a href="javascript:;" class="close J_dismiss_modal"></a>', '</div>', '<div class="modal_body pd0">', '<div class="listed_group" id="J_listed_group">', '<div class="left_text">已选择:</div>', '<div class="center_text" id="J_listed_content"></div>', '<a href="javascript:;" class="right_text" id="J_listed_clear">清空</a>', '<div class="clear"></div>', '</div>', '<div class="J_modal_content"></div>', '</div>', '</div>', '</div>'].join('');
- // 点击
- $('[data-toggle="funCityModal"]').on('click', function() {
- var that = $(this);
- if (QS_city_parent.length <= 0) {
- console.log('地区分类出错!!!');
- return false;
- }
- var titleValue = $(this).data('title');
- var multipleValue = eval($(this).data('multiple'));
- var maximumValue = eval($(this).data('maximum'));
- var widthValue = eval($(this).data('width'));
- var defaultCity = qscms.default_district;
- var defaultCitySpell = qscms.default_district_spell;
- var htmlCategory = '';
- var isSpell = app_spell;
- var cateLevel = qscms.subsite_level;
- var checkedPool = new Array();
- var defaultKeyArr = '';
- var recoverVal = $('#recoverSearchCityModalCode').val();
- var recoverVal3 = $('#recoverSearchCityModalCode3').val();
- var ids = '';
- htmlCategory += '<div class="selected-group J_selected_group"><div class="selected-box"><div class="s-l-txt">已选择:</div><div class="p-cate J_cate_box"></div><div class="btn-some" id="J_clear_all"><a href="javascript:;">清空</a></div></div></div>';
- htmlCategory += '<div class="category-select"><div class="cs-left"><span>选择地区</span></div><div class="cs-right" id="selectCategoryBox">';
- htmlCategory += '<div class="clear"></div></div><div class="clear"></div></div>';
- htmlCategory += '<div class="cate-type" id="checkboxCategoryBox">';
- htmlCategory += '<div class="clear"></div></div>';
- htmlCategory += '</div>';
- // 初始化
- prepareModal(titleValue, multipleValue, maximumValue);
- // 模板写入
- $('.J_modal_content').html(htmlCategory);
- $('.J_btn_yes').attr('id', 'J_btn_yes_city');
- // 显示并调整位置
- $('.modal_dialog').css({
- width: widthValue + 'px',
- left: ($(window).width() - widthValue) / 2,
- top: ($(window).height() - $('.modal_dialog').outerHeight()) / 2 + $(document).scrollTop()
- })
- $('.modal_backdrop').addClass('in');
- if (isSpell) {
- var cateParentHtml = '<select class="categorySelect">';
- for (var i = 0; i < QS_city_spell_parent.length; i++) {
- cateParentHtml += '<option value="' + QS_city_spell_parent[i].split(',')[0] + '">' + QS_city_spell_parent[i].split(',')[1] + '</option>';
- }
- cateParentHtml += '</select>';
- $('#selectCategoryBox').html(cateParentHtml);
- function getParentId(id) {
- $.each(QS_city_spell_parent, function (index, val) {
- var parentValArr = val.split(',');
- if (QS_city_spell[parentValArr[0]]) {
- var subArr = QS_city_spell[parentValArr[0]].split('`');
- getPid(id, subArr, parentValArr[0]);
- }
- })
- return ids;
- }
- function getPid(id, subArr, parentVal) {
- for (var j = 0; j < subArr.length; j++) {
- if (id == subArr[j].split(',')[0]) {
- if (ids) {
- ids = parentVal + '.' + ids;
- } else {
- ids = parentVal;
- }
- } else {
- if (QS_city_spell[subArr[j].split(',')[0]]) {
- var ssubArr = QS_city_spell[subArr[j].split(',')[0]].split('`');
- getPid(id, ssubArr, parentVal + '.' + subArr[j].split(',')[0]);
- }
- }
- }
- }
- // 默认值和需要恢复的处理
- if (recoverVal.length) {
- ids = '';
- var firstKeepHtml = getParentId(recoverVal);
- if (firstKeepHtml) {
- var firstHtml = firstKeepHtml + '.' + recoverVal;
- var firstKeepArr = firstHtml.toString().split('.');
- getSubCateHtml(firstKeepArr[0],firstKeepArr);
- for (var i = 0; i < $('.categorySelect').length; i++) {
- for (var j = 0; j < firstKeepArr.length; j++) {
- $('.categorySelect').eq(i).find('option').each(function(index, el) {
- if ($(this).val() == firstKeepArr[j]) {
- $(this).prop('selected', !0);
- }
- })
- }
- recoverCheckbox()
- }
- } else {
- $('.categorySelect').eq(0).find('option').each(function(index, el) {
- if ($(this).val() == recoverVal) {
- $(this).prop('selected', !0);
- }
- })
- if (getSubCateLevel(recoverVal,'')) {
- getSubCateHtml(recoverVal,'');
- }
- }
- } else {
- if (defaultCitySpell) {
- var firstKeepArr = defaultCitySpell.split('.');
- getSubCateHtml(firstKeepArr[0], '');
- for (var i = 0; i < $('.categorySelect').length; i++) {
- for (var j = 0; j < firstKeepArr.length; j++) {
- $('.categorySelect').eq(i).find('option').each(function(index, el) {
- if ($(this).val() == firstKeepArr[j]) {
- $(this).prop('selected', !0);
- }
- })
- }
- }
- } else {
- getSubCateHtml($('.categorySelect').eq(0).find('option:selected').val(),'');
- $('.categorySelect').eq(0).find('option').each(function(index, el) {
- if ($(this).val() == recoverVal) {
- $(this).prop('selected', !0);
- }
- })
- }
- }
- // 复原checkbox选中
- function recoverCheckbox() {
- $('.checkOption').each(function(index, el) {
- if ($(this).val() ==$("#recoverSearchCityModalCode3").val()){
- $(this).closest('label').addClass('selected');
- $(this).prop('checked', !0);
- }
- })
- }
- // 父级选择
- $(document).off('change','.categorySelect').on('change','.categorySelect', function() {
- if (!($(this).find('option:selected').hasClass('nolimit'))) {
- var currentVal = $(this).val();
- var currentText = $(this).find('option:selected').text();
- $(this).nextAll().remove();
- $('#checkboxCategoryBox').empty();
- getSubCateHtml(currentVal, '');
- }
- })
- // 生成列表
- function getSubCateHtml(currendId, dataArr) {
- var subCateLevelArr = new Array();
- if (dataArr.length) {
- subCateLevelArr = dataArr;
- } else {
- subCateLevelArr = getSubCateLevel(currendId,'').split('.');
- }
- var cateSubHtml = '';
- for(i = 0;i < subCateLevelArr.length-1; i++) {
- cateSubHtml += '<select class="categorySelect">';
- // cateSubHtml += '<option class="nolimit" value="'+subCateLevelArr[i]+'" title="'+getNameNew(subCateLevelArr[i])+'">不限</option>';
- var citySubArr = QS_city_spell[subCateLevelArr[i]].split('`');
- for(j = 0;j < citySubArr.length; j++){
- cateSubHtml += '<option value="'+citySubArr[j].split(',')[0]+'">'+citySubArr[j].split(',')[1]+'</option>';
- }
- cateSubHtml += '</select>';
- }
- $('#selectCategoryBox').append(cateSubHtml);
- var cateChekcId = subCateLevelArr[subCateLevelArr.length-1];
- var checkName = $('.categorySelect').eq($('.categorySelect').length-1).find('option:selected').text();
- if (getSubCateLevel(currendId,'')) {
- // $('#checkboxCategoryBox').html(checkboxFactory(cateChekcId, getNameNew(cateChekcId)));
- $('#checkboxCategoryBox').html(checkboxFactory(cateChekcId, checkName));
- } else {
- $('#checkboxCategoryBox').html(checkboxFactory(currendId, getNameNew(currendId)));
- }
- }
- // 生成checkbox
- function checkboxFactory(id, title) {
- var checkboxHtml = '<div class="dl">';
- checkboxHtml += '<div class="dt"><span>' + title + '</span></div>';
- checkboxHtml += '<div class="dd"><ul>';
- if ( QS_city_spell[id]) {
- var checkArr = QS_city_spell[id].split('`');
- for (var i = 0; i < checkArr.length; i++) {
- var arrP = checkArr[i].split(',');
- checkboxHtml += '<li><div class="one-select"><label><input class="check-box checkOption" type="checkbox" value="' + arrP[0] + '" data-text="' + arrP[1] + '">' + arrP[1] + '</label></div></li>';
- }
- } else {
- id = $('.categorySelect').eq($('.categorySelect').length-1).find('option:selected').val();
- checkboxHtml += '<li><div class="one-select"><label><input class="check-box checkOption noLimit" type="checkbox" value="' + id + '" data-text="' + title + '">不限</label></div></li>';
- }
- checkboxHtml += '</ul></div>';
- checkboxHtml += '<div class="clear"></div></div>';
- return checkboxHtml;
- }
- // 获得级数
- function getSubCateLevel(id, arr) {
- if (QS_city_spell[id]) {
- var levelIdArr = QS_city_spell[id].split('`');
- if (arr.length) {
- arr = arr + '.' + id;
- } else {
- arr = id;
- }
- return getSubCateLevel(levelIdArr[0].split(',')[0],arr);
- } else {
- return arr;
- }
- }
- // 根据id获取对应文字
- function getNameNew(id) {
- var name = '';
- $.each(QS_city_spell_parent, function (index, val) {
- var parentValArr = val.split(',');
- if (QS_city_spell[parentValArr[0]]) {
- var subArr = QS_city_spell[parentValArr[0]].split('`');
- for (var j = 0; j < subArr.length; j++) {
- if (id == subArr[j].split(',')[0]) {
- name = subArr[j].split(',')[1];
- }
- }
- }
- })
- if (!name) {
- $.each(QS_city_spell_parent, function (index, val) {
- var parentValArr = val.split(',');
- if (id == parentValArr[0]) {
- name = parentValArr[1];
- }
- })
- }
- return name;
- }
- } else {
- // id
- var cateParentHtml = '<select class="categorySelect">';
- for (var i = 0; i < QS_city_parent.length; i++) {
- cateParentHtml += '<option value="' + QS_city_parent[i].split(',')[0] + '">' + QS_city_parent[i].split(',')[1] + '</option>';
- }
- cateParentHtml += '</select>';
- $('#selectCategoryBox').html(cateParentHtml);
- function getParentId2(id) {
- for (var i = 0; i < QS_city.length; i++) {
- if (QS_city[i]) {
- var subArr = QS_city[i].split('`');
- for (var j = 0; j < subArr.length; j++) {
- if (id == subArr[j].split(',')[0]) {
- if (ids) {
- ids = i + '.' + ids;
- } else {
- ids = i;
- }
- getParentId2(i);
- }
- }
- }
- }
- return ids;
- }
- // 默认值和需要恢复的处理
- if (recoverVal.length) {
- ids = '';
- var firstKeepHtml = getParentId2(recoverVal);
- if (firstKeepHtml) {
- var firstHtml = firstKeepHtml + '.' + recoverVal;
- var firstKeepArr = firstHtml.toString().split('.');
- getSubCateHtml2(firstKeepArr[0],firstKeepArr);
- for (var i = 0; i < $('.categorySelect').length; i++) {
- for (var j = 0; j < firstKeepArr.length; j++) {
- $('.categorySelect').eq(i).find('option').each(function(index, el) {
- if ($(this).val() == firstKeepArr[j]) {
- $(this).prop('selected', !0);
- }
- })
- }
- }
- } else {
- $('.categorySelect').eq(0).find('option').each(function(index, el) {
- if ($(this).val() == recoverVal) {
- $(this).prop('selected', !0);
- }
- })
- if (getSubCateLevel2(recoverVal,'')) {
- getSubCateHtml2(recoverVal,'');
- }
- }
- } else {
- if (defaultCity) {
- var firstKeepArr = defaultCity.split('.');
- getSubCateHtml2(firstKeepArr[0], '');
- for (var i = 0; i < $('.categorySelect').length; i++) {
- for (var j = 0; j < firstKeepArr.length; j++) {
- $('.categorySelect').eq(i).find('option').each(function(index, el) {
- if ($(this).val() == firstKeepArr[j]) {
- $(this).prop('selected', !0);
- }
- })
- }
- }
- } else {
- getSubCateHtml2($('.categorySelect').eq(0).find('option:selected').val(),'');
- $('.categorySelect').eq(0).find('option').each(function(index, el) {
- if ($(this).val() == recoverVal) {
- $(this).prop('selected', !0);
- }
- })
- }
- }
- // 父级选择
- $(document).off('change','.categorySelect').on('change','.categorySelect', function() {
- /*if ($.browser.msie) {
- }*/
- if (!($(this).find('option:selected').hasClass('nolimit'))) {
- var currentVal = $(this).val();
- var currentText = $(this).find('option:selected').text();
- $(this).nextAll().remove();
- $('#checkboxCategoryBox').empty();
- getSubCateHtml2(currentVal, '');
- }
- })
- // 生成列表
- function getSubCateHtml2(currendId, dataArr) {
- var subCateLevelArr = new Array();
- if (dataArr.length) {
- subCateLevelArr = dataArr;
- } else {
- subCateLevelArr = getSubCateLevel2(currendId,'').split('.');
- }
- var cateSubHtml = '';
- for(i = 0;i < subCateLevelArr.length-1; i++) {
- cateSubHtml += '<select class="categorySelect">';
- var citySubArr = QS_city[subCateLevelArr[i]].split('`');
- // cateSubHtml += '<option class="nolimit" value="'+subCateLevelArr[i]+'" title="'+getNameNew(subCateLevelArr[i])+'">不限</option>';
- for(j = 0;j < citySubArr.length; j++){
- cateSubHtml += '<option value="'+citySubArr[j].split(',')[0]+'">'+citySubArr[j].split(',')[1]+'</option>';
- }
- cateSubHtml += '</select>';
- }
- $('#selectCategoryBox').append(cateSubHtml);
- var cateChekcId = subCateLevelArr[subCateLevelArr.length-1];
- var checkName = $('.categorySelect').eq($('.categorySelect').length-1).find('option:selected').text();
- if (getSubCateLevel2(currendId,'')) {
- // $('#checkboxCategoryBox').html(checkboxFactory2(cateChekcId, getNameNew(cateChekcId)));
- $('#checkboxCategoryBox').html(checkboxFactory2(cateChekcId, checkName));
- } else {
- $('#checkboxCategoryBox').html(checkboxFactory2(currendId, getNameNew(currendId)));
- }
- }
- // 生成checkbox
- function checkboxFactory2(id, title) {
- var checkboxHtml = '<div class="dl">';
- checkboxHtml += '<div class="dt"><span>' + title + '</span></div>';
- checkboxHtml += '<div class="dd"><ul>';
- if (QS_city[id]) {
- var checkArr = QS_city[id].split('`');
- for (var i = 0; i < checkArr.length; i++) {
- var arrP = checkArr[i].split(',');
- checkboxHtml += '<li><div class="one-select"><label><input class="check-box checkOption" type="checkbox" data-code="' + arrP[0] + '" data-text="' + arrP[1] + '">' + arrP[1] + '</label></div></li>';
- }
- } else {
- id = $('.categorySelect').eq($('.categorySelect').length-1).find('option:selected').val();
- checkboxHtml += '<li><div class="one-select"><label><input class="check-box checkOption noLimit" type="checkbox" data-code="' + id + '" data-text="' + title + '">不限</label></div></li>';
- }
- checkboxHtml += '</ul></div>';
- checkboxHtml += '<div class="clear"></div></div>';
- return checkboxHtml;
- }
- // 根据id获取对应文字
- function getNameNew(id) {
- var name = '';
- for (var i = 0; i < QS_city.length; i++) {
- if (QS_city[i]) {
- var iArr = QS_city[i].split('`');
- for (var j = 0; j < iArr.length; j++) {
- if (id == iArr[j].split(',')[0]) {
- name = iArr[j].split(',')[1];
- }
- }
- }
- }
- if (!name) {
- // 只有一级
- for (var i = 0; i < QS_city_parent.length; i++) {
- if (id == QS_city_parent[i].split(',')[0]) {
- name = QS_city_parent[i].split(',')[1];
- }
- }
- }
- return name;
- }
- // 获得级数
- function getSubCateLevel2(id, arr) {
- if (QS_city[id]) {
- var levelIdArr = QS_city[id].split('`');
- if (arr.length) {
- arr = arr + '.' + id;
- } else {
- arr = id;
- }
- return getSubCateLevel2(levelIdArr[0].split(',')[0],arr);
- } else {
- return arr;
- }
- }
- }
- })
- //最后一级点击
- $(document).off("click",'.checkOption').on('click','.checkOption', function() {
- var currentVal3 = $(this).val();
- var currentText = $(this).data("text");
- var currentVal = $('.categorySelect').eq($('.categorySelect').length-1).val();
- $('#searchCityModalCode').val(currentVal3);
- $('#recoverSearchCityModalCode').val(currentVal);
- $('#recoverSearchCityModalCode3').val(currentVal3);
- $('[data-toggle="funCityModal"]').text(currentText);
- $('[data-toggle="funCityModal"]').attr('title', currentText);
- removeModal();
- })
- // 确定
- $(document).off('click','#J_btn_yes_city').on('click','#J_btn_yes_city', function() {
- var currentVal = $('.categorySelect:last').find('option:selected').val();
- var currentText = $('.categorySelect:last').find('option:selected').text();
- if ($('.categorySelect:last').find('option:selected').hasClass('nolimit')) {
- currentText = $('.categorySelect:last').find('option:selected').attr('title');
- }
- $('#searchCityModalCode').val(currentVal);
- $('#recoverSearchCityModalCode').val(currentVal);
- $('[data-toggle="funCityModal"]').text(currentText);
- $('[data-toggle="funCityModal"]').attr('title', currentText);
- removeModal();
- })
- // 初始化程序
- function prepareModal(titleValue, multipleValue, maximumValue) {
- var ie = !-[1, ];
- var ie6 = !-[1, ] && !window.XMLHttpRequest;
- $(backdropLayerTpl).appendTo($(document.body));
- if (ie6) {
- $('.modal_backdrop').css("height", $(document).height());
- }
- $(htmlLayerTpl).appendTo($(document.body));
- $('.J_modal_title').text(titleValue);
- multipleValue = true;
- if (multipleValue) {
- //$('.J_modal_max').text('(最多选择' + maximumValue + '个)');
- }
- if (!multipleValue) {
- $('.modal_footer').hide();
- }
- $(".J_hoverbut").hover(function() {
- $(this).addClass("hover");
- }, function() {
- $(this).removeClass("hover");
- })
- // 可拖动
- var newObj = $('.modal_dialog');
- var newTit = newObj.find(".modal_header");
- newTit.mousedown(function(e) {
- var offset = newObj.offset();
- var x = e.pageX - offset.left;
- var y = e.pageY - offset.top;
- $(document).bind('mousemove', function(ev) {
- newObj.bind('selectstart', function() {
- return false;
- })
- var newx = ev.pageX - x;
- var newy = ev.pageY - y;
- newObj.css({
- 'left': newx + "px",
- 'top': newy + "px"
- })
- })
- })
- $(document).mouseup(function() {
- $(this).unbind("mousemove");
- })
- if (ie) {
- if (window.PIE) {
- $('.pie_about').each(function() {
- PIE.attach(this);
- })
- }
- }
- }
- // 关闭
- $(document).on('click','.J_dismiss_modal', function() {
- removeModal();
- })
- // esc关闭
- $(document).on('keydown', function(event) {
- if (event.keyCode == 27) {
- removeModal();
- }
- })
- //关闭弹窗的公共方法
- function removeModal() {
- setTimeout(function() {
- $('.modal_backdrop').remove();
- $('.modal').remove();
- }, 50)
- }
- }(window.jQuery);
|