在完成一个购物车的功能,在商铺的页面选定了多个商品,将各个商品的详细信息保存到cookie中,点击跳到购物车页面进行结算。

input jquery获取find jquery如何获取input的值_代码质量

input jquery获取find jquery如何获取input的值_代码质量_02

在购物车的页面,是在cookie中取出商品的详细信息,如果是多个商品就对cookie进行循环遍历,取出商品的信息,再对信息进行拼接,效果是上图。

那现在出现一个问题,就是购物车中商品的数量只能点击加号和减号进行增减,无法手动输入,手动输入商品的数量,跳转到提交页面后无法进行保存。看代码:

input jquery获取find jquery如何获取input的值_ViewUI_03

现在就要完成这项功能。

思路是:取到该商品的goodIds,然后到cookie中取出该商品的详细信息,取出其中的buyNum---商品购买的数量,将input中的值赋给它,再讲其保存到cookie中。----公司的代码质量不是很高,但是先完成功能,以后再想想该如何优化。

strHTML = strHTML+' 
 
 

   '; 
  
 strHTML = strHTML+' <span class="reduce'+(buyNum<=1?" disabled":"")+'" goodsId="'+goodsId+'">−'; 
  
 strHTML = strHTML+' '; 
  
 strHTML = strHTML+' 
  +'; 
  
 strHTML = strHTML+' 
 ';

我刚开始想实现此功能的想法是在input标签中的onkeyup函数和onafterpaste函数后加上一个函数setBuyNum函数,这样,当进行购买数量的修改后,会获得商品的id再自动触发该函数,完成,从cookie中取值,取出buyNum,赋值,在保存到cookie中。

但是如果是多个商品会出现问题,只有一个商品的数量会进行改变,另外的商品无法进行保存。原因是,我的代码获得商品的id是var goodsid=$(".numBox .reduce").val();
但是如果是多个商品,那么我去到的是多个id,所以通过我的这种取法,只能得到第一个商品的id。所以不行。

应该用这种写法:

$("input[name='buyNum']").blur(function(){
 var goodsId = $(this).next().attr("goodsId");
 var buyNum = $(this).val();
 var localcart = getDataFromCookie();
 localcart[goodsId]['buyNum'] = parseInt(buyNum);
 saveCookies(localcart);
 });

这种写法更加的精妙,当buyNum修改后,失焦,就会触发该事件。
这两种方法关键是获取商品的id,告诉函数是哪个商品发生了改变,我也是错在此处。
可能因为我的代码没有全部上传上来,所以,只是提供了一种思路。。。