JQuery не работает на ie7 / 8 - PullRequest
2 голосов
/ 28 марта 2012

У меня есть кусок 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('');
      });
 });

1 Ответ

2 голосов
/ 28 марта 2012

Прежде всего, вы должны подумать о переработке своего кода. Это излишне долго с некоторым дублированием кода. Это может быть упрощено до 10 строк или меньше.

Особенно вы должны использовать объекты (в виде хеш-таблиц) вместо переключателей или хранить SKU непосредственно в опциях.

Во-вторых, вы должны посмотреть на сообщение об ошибке, которое IE предоставляет, предпочтительно в консоли в Инструментах разработчика ( F12 > Script> Console), которое даст вам подсказку, что (или хотя бы где) ошибка.

К вашей проблеме: по какой-то причине IE не нравится, когда переменная называется length. Вероятно, он сталкивается с одноименным свойством. Попробуйте переименовать его.

...