我在这个页面上有一段 jQuery - http://blackeaglemedia.co.uk/cs-cart/form/preterm.htm
预期结果应显示用户做出选择时建立的零件编号字段。
这在 Chrome、Firefox 和 IE9 中运行良好,但在 IE7 或 IE8 中似乎不起作用。
jQuery:
$(function() {
var sku1 = sku2 = sku3 = sku4 = sku5 = sku6 = length = '';
$("#options").change(function(){
switch($(this).val()){
case "3134":
sku1 = 'TB';
break;
case "3135":
sku1 = 'LT';
break;
case "3154":
sku1 = 'LTR';
break;
case "3136":
sku1 = 'BO';
break;
case "3138":
sku1 = 'MC';
break;
case "3139":
sku1 = 'NC';
break;
case "3183":
sku1 = 'STA';
break;
}$('#sku').val(sku3+sku2+sku5+sku4+sku1+sku6+length);
});
$("#options2").change(function(){
switch($(this).val()){
case "3111":
sku2 = 'LC';
break;
case "3110":
sku2 ='LCA';
break;
case "3112":
sku2 ='E2000';
break;
case "3113":
sku2 ='E2A';
break;
case "3114":
sku2 ='FC';
break;
case "3115":
sku2 ='FCA';
break;
case "3116":
sku2 ='ST';
break;
case "3117":
sku2 ='SC';
break;
case "3118":
sku2 ='SCA';
break;
} $('#sku').val(sku3+sku2+sku5+sku4+sku1+sku6+length);
});
$("#options3").change(function(){
switch($(this).val()){
case "3175":
sku3 = 'PRE2';
break;
case "3121":
sku3 ='PRE4';
break;
case "3122":
sku3 ='PRE6';
break;
case "3123":
sku3 ='PRE8';
break;
case "3124":
sku3 ='PRE12';
break;
case "3125":
sku3 ='PRE16';
break;
case "3126":
sku3 ='PRE24';
break;
case "3176":
sku3 ='PRE48';
break;
} $('#sku').val(sku3+sku2+sku5+sku4+sku1+sku6+length);
});
$("#options4").change(function(){
switch($(this).val()){
case "3127":
sku4 = '09';
break;
case "3182":
sku4 ='G657A1';
break;
case "3128":
sku4 ='62';
break;
case "3129":
sku4 ='50';
break;
case "3130":
sku4 ='OM3';
break;
case "3131":
sku4 ='OM4';
break;
} $('#sku').val(sku3+sku2+sku5+sku4+sku1+sku6+length);
});
$("#options5").change(function(){
switch($(this).val()){
case "3142":
sku5 = 'LC';
break;
case "3143":
sku5 ='LCA';
break;
case "3144":
sku5 ='E2000';
break;
case "3145":
sku5 ='E2A';
break;
case "3146":
sku5 ='FC';
break;
case "3147":
sku5 ='FCA';
break;
case "3148":
sku5 ='ST';
break;
case "3149":
sku5 ='SC';
break;
case "3150":
sku5 ='SCA';
break;
} $('#sku').val(sku3+sku2+sku5+sku4+sku1+sku6+length);
});
$("#options6").change(function(){
switch($(this).val()){
case "3151":
sku6 = 'LZSH';
break;
case "3177":
sku6 ='PE';
break;
} $('#sku').val(sku3+sku2+sku5+sku4+sku1+sku6+length);
});
$('#length').change(function(){
length = $(this).val(); $('#sku').val(sku3+sku2+sku5+sku4+sku1+sku6+length);
});
});
$(function() {
$('input[type=text]#length').focus(function() {
$(this).val('');
});
});
最佳答案
首先,您应该考虑重新编写代码。由于一些代码重复,它的长度不必要地长。它可能会简化为 10 行或更少。
特别是,您应该使用对象(如哈希表)而不是开关或将“SKU”直接存储在选项中。
其次,您应该查看 IE 提供的错误消息,最好是在开发人员工具的控制台中(F12> 脚本 > 控制台),这将提示您什么(或至少在哪里)错误是。
对于您的问题:出于某种原因,IE 不喜欢名为 length
的变量。它可能与同名的属性发生冲突。尝试重命名它。
关于jQuery 无法在 ie7/8 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9903683/