首先加载jQuery.js插件。
js 文件网上可以下载
然后,一个页面加入购物车里两个商品的文本框
<table width="100%" border="0" class="tb_c lh20">
<tr>
<td>
<input type="text" maxlength="3" id="goods1" goodsID="1" value="1" shopCartID="7507" price="50" class="sdddq" onkeyup="this.value=this.value.replace(/\D/g,'')">
</td>
</tr>
<tr>
<td>
<input type="text" maxlength="3" id="goods2" goodsID="2" value="1" shopCartID="7508" price="60" class="sdddq" onkeyup="this.value=this.value.replace(/\D/g,'')">
</td>
</tr>
</table>
然后文本框的样式
.sdddq {
font-family: “宋体”;
font-size: 12px;
height: 20px;
line-height:20px;
width: 70px;
text-align:center;
padding-bottom:4px;
}
然后在购物车页面里的初始化,就是生成 一个带加和减小按钮的div覆盖在文本框上
<script type="text/javascript">
$(document).ready(function () {
$(".tb_c .sdddq").each(function () {
var id = "#" + $(this).attr("id");//文本框ID
var shopCartID = $(this).attr("shopCartID");//购物车ID
var goodsID = $(this).attr("goodsID");//商品ID
var price = $(this).attr("price");//商品价格
//var addressState;
//alert(shopCartID);
//alert(value);
inputp.addNew($(id), 1, goodsID, shopCartID, price);
});
</script>
最重要的一个js文件
var inputp={
indexInput:0,
addNew:function(obj,stepNum,goodsID,shopCartID,price){
//alert(obj);
this.initNew(obj,stepNum,goodsID,shopCartID,price);
this.indexInput++;
},
getDigit:function(val,num){
var digitNum=0;
if(num.toString().split(".")[1]){
digitNum=num.toString().split(".")[1].length;
}
if(digitNum>0){
val=val.toFixed(digitNum);
}
return val;
},
initNew:function(obj,stepNum,goodsID,shopCartID,price){
var iptID="#"+obj.attr("id");
//obj=$(iptID);
var width=obj.width();
var height=obj.height();
var height1=height;
var _root = this;
width+=3;
//height+=0;
obj.css("border-style","none");
obj.css("border-width","0px");
obj.css("width",width-height1*2-2);
//obj.css("height",height+3+"px");
obj.css("text-align","center");
obj.css("outline","none");
obj.css("vertical-align","middle");
obj.css("line-height",height+"px");
obj.wrap("<div id='"+obj.attr('id')+"T' style='position:relative;overflow:hidden;width:"+width+"px;height:"+height+"px;border: 1px solid #CCC;line-height:20px;'></div>");
obj.before("<div id='"+obj.attr('id')+"l' onselectstart='return false;' style='-moz-user-select:none;cursor:pointer;text-align:center;width:"+height1+"px;height:"+height1+"px;line-height:"+height1+"px;border-right-width: 1px;border-right-style: solid;border-right-color: #CCC;float:left'>-</div>");
//obj.after(" <div id='"+obj.attr('id')+"r' onselectstart='return false;' style='-moz-user-select:none;cursor:pointer;text-align:center;width:"+height1+"px;height:"+height1+"px;line-height:"+height1+"px;border-left-width: 1px;border-left-style: solid;border-left-color: #CCC;float:right'>+</div>");
obj.before("<div id='"+obj.attr('id')+"r' onselectstart='return false;' style='-moz-user-select:none;cursor:pointer;text-align:center;width:"+height1+"px;height:"+height1+"px;line-height:"+height1+"px;border-left-width: 1px;border-left-style: solid;border-left-color: #CCC;float:right'>+</div>");
if(obj.val()<=1){
var jianid="#"+obj.attr('id')+"l";
$(jianid).text("");
$(jianid).css("cursor","default");
}
if(obj.val()>=200)
{
var jiaid="#"+obj.attr('id')+"r";
$(jiaid).text("");
$(jiaid).css("cursor","default");
}
$("#"+obj.attr('id')+"l").click(function(){
_root.leftDo(obj,stepNum,goodsID,shopCartID,price);
});
$("#"+obj.attr('id')+"r").click(function(){
_root.rightDos(obj,stepNum,goodsID,shopCartID,price);
});
},
leftDo:function(obj,stepNum,goodsID,shopCartID,price){
var val=this.formatNum(obj.val());
val=Math.abs(val);
val-=stepNum;
val=this.getDigit(val,stepNum);
//alert(val);
if(val<1){
val=1;
obj.val(1);
var jianid="#"+obj.attr('id')+"l";
$(jianid).text("");
$(jianid).css("cursor","default");
}else{
//$(jianid).text("-");
//alert(val);
var jianid="#"+obj.attr('id')+"r";
$(jianid).text("+");
$(jianid).css("cursor","pointer");
if(val==1)
{
var jianid="#"+obj.attr('id')+"l";
$(jianid).text("");
$(jianid).css("cursor","default");
}
this.moveDo(obj,val,true,stepNum);
var method="updateGoodsSum";
gaijia(method,shopCartID,goodsID,val);
};
var zj=price*(val);
$('#xj_'+goodsID).text("¥"+zj);
},
rightDos:function(obj,stepNum,goodsID,shopCartID,price){
var val=this.formatNum(obj.val());
val=Math.abs(val);
val+=stepNum;
val=this.getDigit(val,stepNum);
//alert(val);
if(val>200)
{
val=200;
obj.val(200);
//alert(obj.val());
var jiaid="#"+obj.attr('id')+"r";
$(jiaid).text("");
$(jiaid).css("cursor","default");
}else
{
//n_b=n_b+1;
var jianid="#"+obj.attr('id')+"l";
$(jianid).text("-");
$(jianid).css("cursor","pointer");
if(val==200)
{
var jiaid="#"+obj.attr('id')+"r";
$(jiaid).text("");
$(jiaid).css("cursor","default");
}
this.moveDo(obj,val,false,stepNum);
var method="updateGoodsSum";
gaijia(method,shopCartID,goodsID,val);
}
var zj=price*(val);
$('#xj_'+goodsID).text("¥"+zj);
},
moveDo:function(obj,num,isup,stepNum){
var startTop=0;
var endTop=0;
if(stepNum>=1){
if(num.toString().split(".")[1]){
num=num.toString().split(".")[0];
obj.val(num);
}
}
var num1=num;
var lens1=num.toString().length;
var divwidth=parseFloat(obj.css("font-size"))/2;
if(isup){
//obj.val(num1);
var isDecimal=false;
for(i=lens1-1;i>=0;i--){
var s=num.toString();
var s1=s.substr(i,1);
var s1num=parseFloat(s1);
if(s1num!=9||isNaN(s1num)){
if(isNaN(s1num)){
//num=parseFloat(s.substr(i-1,lens1-i));
// num++;
// num=this.getDigit(num,stepNum);
//isDecimal=true;
}else{
num=parseFloat(s.substr(i,lens1-i));
num++;
break;
}
}
}
//num=this.getDigit(num,stepNum)
startTop=-20;
endTop=0;
}else{
var isDecimal=false;
for(i=lens1-1;i>=0;i--){
var s=num.toString();
var s1=s.substr(i,1);
var s1num=parseFloat(s1);
if(s1num!=0||isNaN(s1num)){
if(isNaN(s1num)){
//num=parseFloat(s.substr(i-1,lens1-i));
// num=this.getDigit(num,stepNum);
isDecimal=true;
}else{
num=parseFloat(s.substr(i,lens1-i));
break;
}
}
}
if(isDecimal){
num=this.getDigit(num,stepNum);
}
startTop=20;
endTop=0;
}
if($("#"+obj.attr('id')+"Num").length <1){
//background-color:#fff;
var numstr=num.toString();
var widths=divwidth*numstr.length;
var stri="<div id='"+obj.attr('id')+"sy' style='position:relative;width:0px;height:0px'><div id='"+obj.attr('id')+"Num' style='width:"+widths+"px;z-index:100;position:absolute;height:"+obj.height()+"px;top:"+startTop+"px; line-height:"+obj.height()+"px;font-family: "+obj.css("font-family")+";font-size:"+obj.css("font-size")+";'>";
for(i=0;i<numstr.length;i++){
var nums=numstr.substr(i,1);
if(nums=="."){
stri+="<div style='float:left;width:"+divwidth+"px;'> ";
}else{
stri+="<div style='float:left;width:"+divwidth+"px;background-color:#fff'>";
stri+=nums;
}
stri+="</div>";
}
stri+="</div></div>";
$("#"+obj.attr('id')+"T").prepend(stri);
var leftOff=0;
if(num1.toString().length-num.toString().length>0){
leftOff=(divwidth*(num1.toString().length-num.toString().length))/2;
}
var pz=0;
if(/msie/.test(navigator.userAgent.toLowerCase())){
pz=0;
}
if(/firefox/.test(navigator.userAgent.toLowerCase())){
pz=-0.6;
}
if(/webkit/.test(navigator.userAgent.toLowerCase())){
}
if(/opera/.test(navigator.userAgent.toLowerCase())){
//pz=1;
}
var leftpx=(obj.width()/2)+obj.height()-($("#"+obj.attr('id')+"Num").width()/2)+1+leftOff+pz;
$("#"+obj.attr('id')+"Num").css("left",leftpx);
$("#"+obj.attr('id')+"Num").animate({
top:endTop+'px'
//,opacity:0.4
},
300,
function(){
$("#"+obj.attr('id')+"sy").remove();
if(isup){
obj.val(num1);
}else{
obj.val(num1);
}
});
}
}
,
formatNum:function(val){
var val=parseFloat(val);
if(isNaN(val)){
val=0;
}
return val;
}
};
以上代码即可完成加入购物车数字上翻下翻效果,是不是很棒啊!如果不懂的地方可以评论。
演示网站是我做的,如果有不懂的地方可以v我,shisezhe0
演示网址https://www.shisezhe.com/shoppingCart.html
说明:如果直接点上面的网址会因为购物车里没有商品而跳出,请到商品页添加几个商品就可以了