+ -
当前位置:首页 → 问答吧 → ecshop购物车添加加减按钮并自动更新

ecshop购物车添加加减按钮并自动更新

时间:2013-04-17

来源:互联网

在网上找了很多关于ecshop购物车添加按钮和自动更新的,都是用Ajax做的,但是不知道怎么回事,都用不了,要么程序报错,要么根本就不起作用。自己折腾了两天才解决了,贴出来与大家分享一下。
  一、购物车添加加减按钮:
  1、添加以下代码到根目录的/js/common.js 中:
  
/**
* 购物车加减按钮
* @param txt_id 数量的ID
* @param type 加 + 减 -
* @param num 添加或者减少的数量 默认为一
*/
function cart_number(txt_id, type, num)
{
num = num || 1;
var txt = document.getElementById(txt_id);
var source_num = parseInt(txt.value);
if(source_num == 1 && type == '-')
{
alert('请最少购买一个商品');
return;
}
var to_num = source_num;
if(type == '+')
{
to_num += num;
}
else if(type == '-')
{
to_num -= num;
}

txt.value = to_num;
formSubmit(txt);
}
PS:注意红色部分

2、
在模板目录中,打开flow.dwt页面,搜索 goods_number 的input, 在input两侧添加下面的链接代码即可,如果想使用图片替换加号和减号也是可以的哦。
<a href="javascript:cart_number('goods_number_{$goods.rec_id}', '-');;">-</a>
<a href="javascript:cart_number('goods_number_{$goods.rec_id}', '+');;">+</a>

/****************************************
*二、自动更新
*/
1、
修改模版目录下的 flow.dwt 文件:
(1) 在<head>之间添加一段JS,用于取代更新按钮实现表单提交:
<script type=”text/javascript”>
function formSubmit(){     
document.getElementById(“formCart”).submit();
}
</script>
(2) 在<body>之间找到诸如以下代码:
<input type=”text” name=”goods_number[{$goods.rec_id}]” id=”goods_number_{$goods.rec_id}” value=”{$goods.goods_number}” size=”4″ style=”text-align:center ” onkeydown=”showdiv(this)”/>
改成当元素改变时运行脚本:onchange=”formSubmit()” ,如:
<input type=”text” name=”goods_number[{$goods.rec_id}]” id=”goods_number_{$goods.rec_id}” value=”{$goods.goods_number}” size=”4″ style=”text-align:center ” onchange=”formSubmit()”/>
(3) 再找到下面的代码:
<input name=”submit” type=”submit” value=”{$lang.update_cart}” />
把它删掉,或将name="sunmit"中的submit改成其他名字.

2、修改根目录下的 flow.php 文件:
找到以下代码:
elseif ($_REQUEST['step'] == ‘update_cart’)
把show_message($_LANG['update_cart_notice'], $_LANG['back_to_cart'], ‘flow.php’);整行注释掉,
在它上面添加一行代码:ecs_header(“Location: flow.php\n”);
用于实现更新购物车自动跳转回详细页,如:
elseif ($_REQUEST['step'] == ‘update_cart’)
{
/*—————————————————— */
//– 更新购物车
/*—————————————————— */
if (isset($_POST['goods_number']) && is_array($_POST['goods_number']))
{
flow_update_cart($_POST['goods_number']);
}
ecs_header(“Location: flow.php\n”);
// show_message($_LANG['update_cart_notice'], $_LANG['back_to_cart'], ‘flow.php’);
exit;
}


好了,完成。
只是将网上的添加加减按钮和自动更新组合在一起,只是将commen.js中添加语句最后的showdiv改成formSubmit,
flow.dwt中不用对象失去焦点时运行的脚本onblur,改用对象改变时运行的脚本onchange。即红色部分。


作者: Savage_野人   发布时间: 2013-04-17

支持分享~~

作者: hooi   发布时间: 2013-04-17