ecshop jquery冲突,美化商品属性选择 IE中js无法获得默认属性

ecshop 和 jquery 冲突,美化商品属性选择

拷贝一个transport.js  为 transport1.js

在需要用到的页面插入这个新js

隐藏 586行处开始:
/*
 Object.prototype.toJSONString = function () {
 var a = ['{'], // The array holding the text fragments.
 b, // A boolean indicating that a comma is required.
 k, // The current key.
 v; // The current value.
 
function p(s) {
 
// p accumulates text fragment pairs in an array. It inserts a comma before all
 // except the first fragment pair.
 
if (b) {
 a.push(',');
 }
 a.push(k.toJSONString(), ':', s);
 b = true;
 }
 
// Iterate through all of the keys in the object, ignoring the proto chain.
 
for (k in this) {
 if (this.hasOwnProperty(k)) {
 v = this[k];
 switch (typeof v) {
 
// Values without a JSON representation are ignored.
 
case 'undefined':
 case 'function':
 case 'unknown':
 break;
 
// Serialize a JavaScript object value. Ignore objects that lack the
 // toJSONString method. Due to a specification error in ECMAScript,
 // typeof null is 'object', so watch out for that case.
 
case 'object':
 if (this !== window)
 {
 if (v) {
 if (typeof v.toJSONString === 'function') {
 p(v.toJSONString());
 }
 } else {
 p("null");
 }
 }
 break;
 default:
 p(v.toJSONString());
 }
 }
 }
 
// Join all of the fragments together and return.
 
a.push('}');
 return a.join('');
 };
*/

修改 common.js getSelectedAttributes方法。(如果需要的话)这里是解决商品商品属性点击的时候切换价格的
/**
 * 获得选定的商品属性
 */
function getSelectedAttributes(formBuy)
{
 var spec_arr = new Array();
 var j = 0;
 
for (i = 0; i < formBuy.elements.length; i ++ )
 {
 var prefix = formBuy.elements[i].name.substr(0, 5);
 
if (prefix == 'spec_' && (
 ((formBuy.elements[i].type == 'hidden' || formBuy.elements[i].type == 'checkbox') && formBuy.elements[i].checked) ||
 formBuy.elements[i].tagName == 'SELECT'))
 {
 spec_arr[j] = formBuy.elements[i].value;
 j++ ;
 }
 }
 
return spec_arr;
}

common.js 加入:
</pre>
function obj2str(o){
 var r = [];
 if(typeof o =="string") return "\""+o.replace(/([\'\"\\])/g,"\\$1").replace(/(\n)/g,"\\n").replace(/(\r)/g,"\\r").replace(/(\t)/g,"\\t")+"\"";
 if(typeof o =="undefined") return "undefined";
 if(typeof o == "object"){
 if(o===null) return "null";
 else if(!o.sort){
 for(var i in o)
 r.push("\""+i+"\""+":"+obj2str(o[i]))
 r="{"+r.join()+"}"
 }else{
 for(var i =0;i<o.length;i++)
 r.push(obj2str(o[i]))
 r="["+r.join()+"]"
 }
 return r;
 }
 return o.toString();
}

加入购物车改为:
Ajax.call('flow.php?step=add_to_cart', 'goods=' + obj2str(goods), addToCartResponse, 'POST', 'JSON');

ECshop在IE下js无法获得默认属性的解决方法

商品属性美化之后

属性都用 type= hidden 形式

就算给了默认值 checked=true

IE进入第一次加载的时候还是无法获得attr的值。

解决:

在goods.dwt 属性加一个默认值 defaultChecked

如:
<!-- {foreach from=$spec.values item=value key=key} -->
               
              <span class="fl junma {if $key eq 0}hover{/if}" name="spec_{$spec_key}" value="{$value.id}"> {$value.label}
                </span>
           <input type="hidden" name="spec_{$spec_key}" value="{$value.id}" {if $key eq 0}checked="true" defaultChecked="true"{/if}>
             <!-- {/foreach} -->

common.js里面

js修改为:
/**
 * 获得选定的商品属性
 */
function getSelectedAttributes(formBuy)
{
  var spec_arr = new Array();
  var j = 0;
 
  for (i = 0; i < formBuy.elements.length; i ++ )
  {
    var prefix = formBuy.elements[i].name.substr(0, 5);
    if (prefix == 'spec_' && (
      ((formBuy.elements[i].type == 'hidden' || formBuy.elements[i].type == 'checkbox') && formBuy.elements[i].checked) ||
      formBuy.elements[i].tagName == 'SELECT' || formBuy.elements[i].getAttribute('defaultChecked')))
    {
         
      spec_arr[j] = formBuy.elements[i].value;
      j++ ;
    }
  }
 
  return spec_arr;
}

时间: 2024-09-19 22:54:18

ecshop jquery冲突,美化商品属性选择 IE中js无法获得默认属性的相关文章

ECshop在IE浏览器下js无法获得默认属性

商品属性美化之后 属性都用 type= hidden 形式 就算给了默认值 checked=true IE进入第一次加载的时候还是无法获得attr的值. 解决: 在goods.dwt 属性加一个默认值 defaultChecked 如: <!-- {foreach from=$spec.values item=value key=key} -->                              <span class="fl junma {if $key eq 0}h

jquery选择body中的title标记时的异常情况

jQuery的选择器,在选择body中出现的title标记时,会出现和预期不同的效果,测试代码如下所示. <html> <head> <script src="jquery-1.2.js"></script> <script> $(document).ready ( function () { console.info($("title")); console.info($("not_title&

是ecshop与JQUERY冲突还是我我JS哪写错了求大神们帮下忙

问题描述 是ecshop与JQUERY冲突还是我我JS哪写错了求大神们帮下忙 如图,这个商品详情页面的其他功能都是好的,而且勾选套餐如果不选基本件也会跳出对话框.插件是我下载的,可是组合购买那个按键点不起来,鼠标放上面会显示 Javascript:addMultiTocart("m_goods_1","17"),但是点不进去也不报错,求大神帮忙分析分析问题出在我JS写错还是是因为Jquery冲突问题, 解决方案 求大神横空出世,这个问题小弟被困扰两天了

Material Design系列之Behavior实现支付密码弹窗和商品属性选择效果_Android

今天的效果在支付宝.淘宝.京东等电商App中很常见.比如支付宝输入密码弹窗.商城下单时选择商品属性时,从下面浮动上来一个PopupWindow,那么今天就带大家用Behavior来实现这两个效果,结果你会发现简直只需要一行代码. 总结下现在用的APP: 1. 仿支付宝弹出的输入支付密码窗口. 2. 仿淘宝/天猫弹出商品属性选择框. 3. 知乎首页上下滑动隐藏ToolBar和NavigationBar. 4. - 系列博客: 1. Material Design系列,Behavior之Bottom

JQUERY的属性选择符和自定义选择符使用方法(二)_jquery

例子:给链接中含用"wangorg"字符的链接文字加粗 css: 复制代码 代码如下: .abold{ font-weight:bold; } html: 复制代码 代码如下: $('document').ready(function(){ $('a[href*=wangorg]').addClass('abold'); }) 属性选择也可以用组合方式: $('a[href^=http] [href*=wangorg]').addClass('abold') 自定义选择符是JQUERY

jquery选择器-根据多个属性选择示例代码_jquery

根据多个属性选择E[attr=val][attr=val] $("div[title='ttt'][class='aaaa']").click()................ 所有div元素下所有属性title值是等于ttt并且属性class等于aaaa的元素

求 商品规格选择-求JQ或JS仿淘宝商品详情选择规格颜色等功能

问题描述 求JQ或JS仿淘宝商品详情选择规格颜色等功能 选择要求:有几个属性,如 尺寸和颜色,尺寸:M.L.XL.XXL 等,颜色:黑色.白色.黄色.红色等,其每个属性都有关联,如 首选M,颜色除黑色或其他外都能选择:如首选 黄色,尺寸除XXL或其他外都能选择. 自己写的有问题.代码放上一部分.已生成的数组求值. HTML:↓ <div class="sys_item_spec"> <dl class="clearfix iteminfo_parameter

jquery仿QQ登录账号选择下拉框效果_jquery

QQ登录的时候,可以选择以前登录过的账户,这个东西也可以在网站登录的时候用到,所以我就想做一个这样的插件:在网上查了很多,没有找到合适自己的,所以决定自动制作一个. 原理就是一个textbox加一个ul模拟下拉框,用font模拟一个下拉按钮. 一.制作静态效果 先用css和html,做出一个应该有的样子.这里这两个我使用的是字体,可以在icomoon网站上面自己制作.用字体的好处是和输入框定位很方便,而且还可以控制大小颜色等,唯一的不足是IE6和IE7由于不支持:before选择器,导致无法显示

jQuery库的导入与选择符

本人最近学图灵系列丛书中<jQuery基础教程>,现将相关摘录整理如下(后续章节也会相继整理出来). 关于库的导入: 引用jQuery库文件的<script>标签,必须放在引用自定义脚本文件的<script>标签之前.否则,在我们编写的代码中将引用不到jQuery框架. jQuery中基本的操作就是选择文档中的某个部分.这是通过$()结构来完成的.通常,该结构中需要一个字符串参数,参数可以包含任CSS选择符表达式.$()函数实际上就是jQuery对象的一个制造工厂.jQ