shopnc - common.js(包含扩展动画方法)
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return r[2];
return '';
}
function addCookie(name, value, expireHours) {
var cookieString = name + "=" + escape(value) + "; path=/";
//判断是否设置过期时间
if (expireHours > 0) {
var date = new Date();
date.setTime(date.getTime() + expireHours * 3600 * 1000);
cookieString = cookieString + ";expires=" + date.toGMTString();
}
document.cookie = cookieString;
}
function getCookie(name) {
var strcookie = document.cookie;
var arrcookie = strcookie.split("; ");
for (var i = 0; i < arrcookie.length; i++) {
var arr = arrcookie[i].split("=");
if (arr[0] == name) return unescape(arr[1]);
}
return null;
}
function delCookie(name) { //删除cookie
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval = getCookie(name);
if (cval != null) document.cookie = name + "=" + cval + "; path=/;expires=" + exp.toGMTString();
}
function checkLogin(state) {
if (state == 0) {
location.href = WapSiteUrl + '/tmpl/member/login.html';
return false;
} else {
return true;
}
}
function contains(arr, str) {
var i = arr.length;
while (i--) {
if (arr[i] === str) {
return true;
}
}
return false;
}
function buildUrl(type, data) {
switch (type) {
case 'keyword':
return WapSiteUrl + '/tmpl/product_list.html?keyword=' + encodeURIComponent(data);
case 'special':
return WapSiteUrl + '/special.html?special_id=' + data;
case 'goods':
return WapSiteUrl + '/tmpl/product_detail.html?goods_id=' + data;
case 'url':
return data;
}
return WapSiteUrl;
}
function errorTipsShow(html) {
$(".error-tips").html(html).show();
setTimeout(function() {
errorTipsHide();
}, 3000);
}
function errorTipsHide() {
$(".error-tips").html("").hide();
}
function writeClear(o) {
if (o.val().length > 0) {
o.parent().addClass('write');
} else {
o.parent().removeClass('write');
}
btnCheck(o.parents('form'));
}
function btnCheck(form) {
var btn = true;
form.find('input').each(function() {
if ($(this).hasClass('no-follow')) {
return;
}
if ($(this).val().length == 0) {
btn = false;
}
});
if (btn) {
form.find('.btn').parent().addClass('ok');
} else {
form.find('.btn').parent().removeClass('ok');
}
}
/**
* 取得默认系统搜索关键词
* @param cmd
*/
function getSearchName() {
var keyword = decodeURIComponent(getQueryString('keyword'));
if (keyword == '') {
if (getCookie('deft_key_value') == null) {
$.getJSON(ApiUrl + '/index.php?act=index&op=search_hot_info', function(result) {
var data = result.datas.hot_info;
if (typeof data.name != 'undefined') {
$('#keyword').attr('placeholder', data.name);
$('#keyword').html(data.name);
addCookie('deft_key_name', data.name, 1);
addCookie('deft_key_value', data.value, 1);
} else {
addCookie('deft_key_name', '', 1);
addCookie('deft_key_value', '', 1);
}
})
} else {
$('#keyword').attr('placeholder', getCookie('deft_key_name'));
$('#keyword').html(getCookie('deft_key_name'));
}
}
}
// 免费领代金券
function getFreeVoucher(tid) {
var key = getCookie('key');
if (!key) {
checkLogin(0);
return;
}
$.ajax({
type: 'post',
url: ApiUrl + "/index.php?act=member_voucher&op=voucher_freeex",
data: {
tid: tid,
key: key
},
dataType: 'json',
success: function(result) {
checkLogin(result.login);
var msg = '领取成功';
var skin = 'green';
if (result.datas.error) {
msg = '领取失败:' + result.datas.error;
skin = 'red';
}
$.sDialog({
skin: skin,
content: msg,
okBtn: false,
cancelBtn: false
});
}
});
}
// 登陆后更新购物车
function updateCookieCart(key) {
var cartlist = decodeURIComponent(getCookie('goods_cart'));
if (cartlist) {
$.ajax({
type: 'post',
url: ApiUrl + '/index.php?act=member_cart&op=cart_batchadd',
data: {
key: key,
cartlist: cartlist
},
dataType: 'json',
async: false
});
delCookie('goods_cart');
}
}
/**
* 查询购物车中商品数量
* @param key
* @param expireHours
*/
function getCartCount(key, expireHours) {
var cart_count = 0;
if (getCookie('key') !== null && getCookie('cart_count') === null) {
var key = getCookie('key');
$.ajax({
type: 'post',
url: ApiUrl + '/index.php?act=member_cart&op=cart_count',
data: {
key: key
},
dataType: 'json',
async: false,
success: function(result) {
if (typeof(result.datas.cart_count) != 'undefined') {
addCookie('cart_count', result.datas.cart_count, expireHours);
cart_count = result.datas.cart_count;
}
}
});
} else {
cart_count = getCookie('cart_count');
}
if (cart_count > 0 && $('.nctouch-nav-menu').has('.cart').length > 0) {
$('.nctouch-nav-menu').has('.cart').find('.cart').parents('li').find('sup').show();
$('#header-nav').find('sup').show();
}
}
/**
* 查询是否有新消息
*/
function getChatCount() {
if ($('#header').find('.message').length > 0) {
var key = getCookie('key');
if (key !== null) {
$.getJSON(ApiUrl + '/index.php?act=member_chat&op=get_msg_count', {
key: key
}, function(result) {
if (result.datas > 0) {
$('#header').find('.message').parent().find('sup').show();
$('#header-nav').find('sup').show();
}
});
}
$('#header').find('.message').parent().click(function() {
window.location.href = WapSiteUrl + '/tmpl/member/chat_list.html';
});
}
}
$(function() {
$('.input-del').click(function() {
$(this).parent().removeClass('write').find('input').val('');
btnCheck($(this).parents('form'));
});
// radio样式
$('body').on('click', 'label', function() {
if ($(this).has('input[type="radio"]').length > 0) {
$(this).addClass('checked').siblings().removeAttr('class').find('input[type="radio"]').removeAttr('checked');
} else if ($(this).has('[type="checkbox"]')) {
if ($(this).find('input[type="checkbox"]').prop('checked')) {
$(this).addClass('checked');
} else {
$(this).removeClass('checked');
}
}
});
// 滚动条通用js
if ($('body').hasClass('scroller-body')) {
new IScroll('.scroller-body', {
mouseWheel: true,
click: true
});
}
// 右上侧小导航控件
$('#header').on('click', '#header-nav', function() {
if ($('.nctouch-nav-layout').hasClass('show')) {
$('.nctouch-nav-layout').removeClass('show');
} else {
$('.nctouch-nav-layout').addClass('show');
}
});
$('#header').on('click', '.nctouch-nav-layout', function() {
$('.nctouch-nav-layout').removeClass('show');
});
$(document).scroll(function() {
$('.nctouch-nav-layout').removeClass('show');
});
getSearchName();
getCartCount();
getChatCount(); // 导航右侧消息
//回到顶部
$(document).scroll(function() {
set();
});
$('.fix-block-r,footer').on('click', ".gotop", function() {
btn = $(this)[0];
this.timer = setInterval(function() {
$(window).scrollTop(Math.floor($(window).scrollTop() * 0.8));
if ($(window).scrollTop() == 0) clearInterval(btn.timer, set);
}, 10);
});
function set() {
$(window).scrollTop() == 0 ? $('#goTopBtn').addClass('hide') : $('#goTopBtn').removeClass('hide');
}
});
(function($) {
$.extend($, {
/**
* 滚动header固定到顶部
*/
scrollTransparent: function(options) {
var defaults = {
valve: '#header', // 动作触发
scrollHeight: 50
}
var options = $.extend({}, defaults, options);
function _init() {
$(window).scroll(function() {
if ($(window).scrollTop() <= options.scrollHeight) {
$(options.valve).addClass('transparent').removeClass('posf');
} else {
$(options.valve).addClass('posf').removeClass('transparent');
}
});
}
return this.each(function() {
_init();
})();
},
/**
* 选择地区
*
* @param $
*/
areaSelected: function(options) {
var defaults = {
success: function(data) {}
}
var options = $.extend({}, defaults, options);
var ASID = 0;
var ASID_1 = 0;
var ASID_2 = 0;
var ASID_3 = 0;
var ASNAME = '';
var ASINFO = '';
var ASDEEP = 1;
var ASINIT = true;
function _init() {
if ($('#areaSelected').length > 0) {
$('#areaSelected').remove();
}
var html = '<div id="areaSelected">' + '<div class="nctouch-full-mask left">' + '<div class="nctouch-full-mask-bg"></div>' + '<div class="nctouch-full-mask-block">' + '<div class="header">' + '<div class="header-wrap">' + '<div class="header-l"><a href="javascript:void(0);"><i class="back"></i></a></div>' + '<div class="header-title">' + '<h1>选择地区</h1>' + '</div>' + '<div class="header-r"><a href="javascript:void(0);"><i class="close"></i></a></div>' + '</div>' + '</div>' + '<div class="nctouch-main-layout">' + '<div class="nctouch-single-nav">' + '<ul id="filtrate_ul" class="area">' + '<li class="selected"><a href="javascript:void(0);">一级地区</a></li>' + '<li><a href="javascript:void(0);" >二级地区</a></li>' + '<li><a href="javascript:void(0);" >三级地区</a></li>' + '</ul>' + '</div>' + '<div class="nctouch-main-layout-a"><ul class="nctouch-default-list"></ul></div>' + '</div>' + '</div>' + '</div>' + '</div>';
$('body').append(html);
_getAreaList();
_bindEvent();
_close();
}
function _getAreaList() {
$.ajax({ //获取区域列表
type: 'get',
url: ApiUrl + '/index.php?act=area&op=area_list',
data: {
area_id: ASID
},
dataType: 'json',
async: false,
success: function(result) {
if (result.datas.area_list.length == 0) {
_finish();
return false;
}
if (ASINIT) {
ASINIT = false
} else {
ASDEEP++;
}
$('#areaSelected').find('#filtrate_ul').find('li').eq(ASDEEP - 1).addClass('selected').siblings().removeClass('selected');
checkLogin(result.login);
var data = result.datas;
var area_li = '';
for (var i = 0; i < data.area_list.length; i++) {
area_li += '<li><a href="javascript:void(0);" data-id="' + data.area_list[i].area_id + '" data-name="' + data.area_list[i].area_name + '"><h4>' + data.area_list[i].area_name + '</h4><span class="arrow-r"></span> </a></li>';
}
$('#areaSelected').find(".nctouch-default-list").html(area_li);
if (typeof(myScrollArea) == 'undefined') {
if (typeof(IScroll) == 'undefined') {
$.ajax({
url: WapSiteUrl + '/js/iscroll.js',
dataType: "script",
async: false
});
}
myScrollArea = new IScroll('#areaSelected .nctouch-main-layout-a', {
mouseWheel: true,
click: true
});
} else {
myScrollArea.destroy();
myScrollArea = new IScroll('#areaSelected .nctouch-main-layout-a', {
mouseWheel: true,
click: true
});
}
}
});
return false;
}
function _bindEvent() {
$('#areaSelected').find('.nctouch-default-list').off('click', 'li > a');
$('#areaSelected').find('.nctouch-default-list').on('click', 'li > a', function() {
ASID = $(this).attr('data-id');
eval("ASID_" + ASDEEP + "=$(this).attr('data-id')");
ASNAME = $(this).attr('data-name');
ASINFO += ASNAME + ' ';
var _li = $('#areaSelected').find('#filtrate_ul').find('li').eq(ASDEEP);
_li.prev().find('a').attr({
'data-id': ASID,
'data-name': ASNAME
}).html(ASNAME);
if (ASDEEP == 3) {
_finish();
return false;
}
_getAreaList();
});
$('#areaSelected').find('#filtrate_ul').off('click', 'li > a');
$('#areaSelected').find('#filtrate_ul').on('click', 'li > a', function() {
if ($(this).parent().index() >= $('#areaSelected').find('#filtrate_ul').find('.selected').index()) {
return false;
}
ASID = $(this).parent().prev().find('a').attr('data-id');
ASNAME = $(this).parent().prev().find('a').attr('data-name');
ASDEEP = $(this).parent().index();
ASINFO = '';
for (var i = 0; i < $('#areaSelected').find('#filtrate_ul').find('a').length; i++) {
if (i < ASDEEP) {
ASINFO += $('#areaSelected').find('#filtrate_ul').find('a').eq(i).attr('data-name') + ' ';
} else {
var text = '';
switch (i) {
case 0:
text = '一级地区'
break;
case 1:
text = '二级地区'
break;
case 2:
text = '三级地区';
break;
}
$('#areaSelected').find('#filtrate_ul').find('a').eq(i).html(text);
}
}
_getAreaList();
});
}
function _finish() {
var data = {
area_id: ASID,
area_id_1: ASID_1,
area_id_2: ASID_2,
area_id_3: ASID_3,
area_name: ASNAME,
area_info: ASINFO
};
options.success.call('success', data);
if (!ASINIT) {
$('#areaSelected').find('.nctouch-full-mask').addClass('right').removeClass('left');
}
return false;
}
function _close() {
$('#areaSelected').find('.header-l').off('click', 'a');
$('#areaSelected').find('.header-l').on('click', 'a', function() {
$('#areaSelected').find('.nctouch-full-mask').addClass('right').removeClass('left');
});
return false;
}
return this.each(function() {
return _init();
})();
},
/**
* 从右到左动态显示隐藏内容
*
*/
animationLeft: function(options) {
var defaults = {
valve: '.animation-left', // 动作触发
wrapper: '.nctouch-full-mask', // 动作块
scroll: '' // 滚动块,为空不触发滚动
}
var options = $.extend({}, defaults, options);
function _init() {
$(options.valve).click(function() {
$(options.wrapper).removeClass('hide').removeClass('right').addClass('left');
if (options.scroll != '') {
if (typeof(myScrollAnimationLeft) == 'undefined') {
if (typeof(IScroll) == 'undefined') {
$.ajax({
url: WapSiteUrl + '/js/iscroll.js',
dataType: "script",
async: false
});
}
myScrollAnimationLeft = new IScroll(options.scroll, {
mouseWheel: true,
click: true
});
} else {
myScrollAnimationLeft.refresh();
}
}
});
$(options.wrapper).on('click', '.header-l > a', function() {
$(options.wrapper).addClass('right').removeClass('left');
});
}
return this.each(function() {
_init();
})();
},
/**
* 从下到上动态显示隐藏内容
*
*/
animationUp: function(options) {
var defaults = {
valve: '.animation-up', // 动作触发,为空直接触发
wrapper: '.nctouch-bottom-mask', // 动作块
scroll: '.nctouch-bottom-mask-rolling', // 滚动块,为空不触发滚动
start: function() {}, // 开始动作触发事件
close: function() {} // 关闭动作触发事件
}
var options = $.extend({}, defaults, options);
function _animationUpRun() {
options.start.call('start');
$(options.wrapper).removeClass('down').addClass('up');
if (options.scroll != '') {
if (typeof(myScrollAnimationUp) == 'undefined') {
if (typeof(IScroll) == 'undefined') {
$.ajax({
url: WapSiteUrl + '/js/iscroll.js',
dataType: "script",
async: false
});
}
myScrollAnimationUp = new IScroll(options.scroll, {
mouseWheel: true,
click: true
});
} else {
myScrollAnimationUp.refresh();
}
}
}
return this.each(function() {
if (options.valve != '') {
$(options.valve).on('click', function() {
_animationUpRun();
});
} else {
_animationUpRun();
}
$(options.wrapper).on('click', '.nctouch-bottom-mask-bg,.nctouch-bottom-mask-close', function() {
$(options.wrapper).addClass('down').removeClass('up');
options.close.call('close');
});
})();
}
});
})(Zepto);
/**
* 异步上传图片
*/
$.fn.ajaxUploadImage = function(options) {
var defaults = {
url: '',
data: {},
start: function() {}, // 开始上传触发事件
success: function() {}
}
var options = $.extend({}, defaults, options);
var _uploadFile;
function _checkFile() {
//文件为空判断
if (_uploadFile === null || _uploadFile === undefined) {
alert("请选择您要上传的文件!");
return false;
}
//
// //检测文件类型
// if(_uploadFile.type.indexOf('image') === -1) {
// alert("请选择图片文件!");
// return false;
// }
//
// //计算文件大小
// var size = Math.floor(_uploadFile.size/1024);
// if (size > 5000) {
// alert("上传文件不得超过5M!");
// return false;
// };
return true;
};
return this.each(function() {
$(this).on('change', function() {
var _element = $(this);
options.start.call('start', _element);
_uploadFile = _element.prop('files')[0];
if (!_checkFile) return false;
try {
//执行上传操作
var xhr = new XMLHttpRequest();
xhr.open("post", options.url, true);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
returnDate = $.parseJSON(xhr.responseText);
options.success.call('success', _element, returnDate);
};
};
//表单数据
var fd = new FormData();
for (k in options.data) {
fd.append(k, options.data[k]);
}
fd.append(_element.attr('name'), _uploadFile);
//执行发送
result = xhr.send(fd);
} catch (e) {
console.log(e);
alert(e);
}
});
});
}
function loadSeccode() {
$("#codekey").val('');
//加载验证码
$.ajax({
type: 'get',
url: ApiUrl + "/index.php?act=seccode&op=makecodekey",
async: false,
dataType: 'json',
success: function(result) {
$("#codekey").val(result.datas.codekey);
}
});
$("#codeimage").attr('src', ApiUrl + '/index.php?act=seccode&op=makecode&k=' + $("#codekey").val() + '&t=' + Math.random());
}
/**
* 收藏店铺
*/
function favoriteStore(store_id) {
var key = getCookie('key');
if (!key) {
checkLogin(0);
return;
}
if (store_id <= 0) {
$.sDialog({
skin: "green",
content: '参数错误',
okBtn: false,
cancelBtn: false
});
return false;
}
var return_val = false;
$.ajax({
type: 'post',
url: ApiUrl + '/index.php?act=member_favorites_store&op=favorites_add',
data: {
key: key,
store_id: store_id
},
dataType: 'json',
async: false,
success: function(result) {
if (result.code == 200) {
// $.sDialog({skin: "green", content: "收藏成功!", okBtn: false, cancelBtn: false});
return_val = true;
} else {
$.sDialog({
skin: "red",
content: result.datas.error,
okBtn: false,
cancelBtn: false
});
}
}
});
return return_val;
}
/**
* 取消收藏店铺
*/
function dropFavoriteStore(store_id) {
var key = getCookie('key');
if (!key) {
checkLogin(0);
return;
}
if (store_id <= 0) {
$.sDialog({
skin: "green",
content: '参数错误',
okBtn: false,
cancelBtn: false
});
return false;
}
var return_val = false;
$.ajax({
type: 'post',
url: ApiUrl + '/index.php?act=member_favorites_store&op=favorites_del',
data: {
key: key,
store_id: store_id
},
dataType: 'json',
async: false,
success: function(result) {
if (result.code == 200) {
// $.sDialog({skin: "green", content: "已取消收藏!", okBtn: false, cancelBtn: false});
return_val = true;
} else {
$.sDialog({
skin: "red",
content: result.datas.error,
okBtn: false,
cancelBtn: false
});
}
}
});
return return_val;
}
/**
* 收藏商品
*/
function favoriteGoods(goods_id) {
var key = getCookie('key');
if (!key) {
checkLogin(0);
return;
}
if (goods_id <= 0) {
$.sDialog({
skin: "green",
content: '参数错误',
okBtn: false,
cancelBtn: false
});
return false;
}
var return_val = false;
$.ajax({
type: 'post',
url: ApiUrl + '/index.php?act=member_favorites&op=favorites_add',
data: {
key: key,
goods_id: goods_id
},
dataType: 'json',
async: false,
success: function(result) {
if (result.code == 200) {
// $.sDialog({skin: "green", content: "收藏成功!", okBtn: false, cancelBtn: false});
return_val = true;
} else {
$.sDialog({
skin: "red",
content: result.datas.error,
okBtn: false,
cancelBtn: false
});
}
}
});
return return_val;
}
/**
* 取消收藏商品
*/
function dropFavoriteGoods(goods_id) {
var key = getCookie('key');
if (!key) {
checkLogin(0);
return;
}
if (goods_id <= 0) {
$.sDialog({
skin: "green",
content: '参数错误',
okBtn: false,
cancelBtn: false
});
return false;
}
var return_val = false;
$.ajax({
type: 'post',
url: ApiUrl + '/index.php?act=member_favorites&op=favorites_del',
data: {
key: key,
fav_id: goods_id
},
dataType: 'json',
async: false,
success: function(result) {
if (result.code == 200) {
// $.sDialog({skin: "green", content: "已取消收藏!", okBtn: false, cancelBtn: false});
return_val = true;
} else {
$.sDialog({
skin: "red",
content: result.datas.error,
okBtn: false,
cancelBtn: false
});
}
}
});
return return_val;
}
/**
* 动态加载css文件
* @param css_filename css文件路径
*/
function loadCss(css_filename) {
var link = document.createElement('link');
link.setAttribute('type', 'text/css');
link.setAttribute('href', css_filename);
link.setAttribute('href', css_filename);
link.setAttribute('rel', 'stylesheet');
css_id = document.getElementById('auto_css_id');
if (css_id) {
document.getElementsByTagName('head')[0].removeChild(css_id);
}
document.getElementsByTagName('head')[0].appendChild(link);
}
/**
* 动态加载js文件
* @param script_filename js文件路径
*/
function loadJs(script_filename) {
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', script_filename);
script.setAttribute('id', 'auto_script_id');
script_id = document.getElementById('auto_script_id');
if (script_id) {
document.getElementsByTagName('head')[0].removeChild(script_id);
}
document.getElementsByTagName('head')[0].appendChild(script);
}
//列表添加购物车
function isEmpty(obj) {
for (var name in obj) {
return false;
}
return true;
}
// 是否开启微信自动登录,默认是不自动,如果需要自动,请把下面的flase修改为true
var WeiXinOauth = false;
if (WeiXinOauth) {
var key = getCookie('key');
var uid = window.location.href.split("#V5");
var fragment = uid[1];
if (fragment) {
if (fragment.indexOf("V5") == 0) {
addCookie("uid", "0");
} else {
addCookie("uid", fragment);
}
}
if (!key) {
var ua = window.navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
window.location.href = ApiUrl + "/index.php?act=auto&op=login&ref=" + encodeURIComponent(window.location.href);
}
}
}