Сценарий значения по умолчанию не работает в IE7 - PullRequest
0 голосов
/ 29 октября 2011

Я использую следующий скрипт значений по умолчанию, который работает во всех протестированных браузерах, кроме IE7, где значение по умолчанию не отображается для поля «Имя» (должно отображаться «Имя»).

Я запустил страницу в IETester, и она выдала ошибку: «Ожидаемый идентификатор, строка или номер» в строке с }; в 'name[]': 'Name',.Однако я не знаю, как исправить эту ошибку.

РЕДАКТИРОВАТЬ: Эта ошибка исчезла после удаления запятой после 'Name', но я по-прежнему не вижу значения по умолчанию вIE7.Вы можете видеть, что я имею в виду на этой странице .

Может ли кто-нибудь помочь с этим?

Спасибо,

Ник

<script>
$(function() {
    var defaults = {
        'name[]': 'Name',
    };

    // separating set and remove
    // note that you could add "defaults" as an arg if you had different
    // defaults for different fieldsets
    var setDefaults = function(inputElements) {
        $(inputElements).each(function() {
            var d = defaults[this.name];
            if (d) {
                // set with jQuery
                // we don't need the data - just check on the class
                $(this).val(d)
                    .addClass('default_value');
            }
        });
    };

    var removeDefaults = function(inputElements) {
        $(inputElements).each(function() {
           if ($(this).hasClass('default_value')) {
                $(this).val('')
                   .removeClass('default_value');
           }
        });
    };

    setDefaults(jQuery('form[name=booking] input'));

    // Toggles 
    $('form[name=booking]').delegate('input', {
        'focus': function() {
            removeDefaults($(this));
        },
        'blur': function() {
            // switch to using .val() for consistency
            if (!$(this).val()) setDefaults(this);
        }
    });
 }); 
 </script>

Ответы [ 2 ]

1 голос
/ 29 октября 2011

и выдает ошибку: «Ожидаемый идентификатор, строка или число» в строке с};под 'name []': 'Name' ,.Хотя я не знаю, как исправить эту ошибку.

IE задыхается запятой здесь:

var defaults = {
        'name[]': 'Name',
    };

IIRC, по праву согласно стандарту ECMAScriptВ любом случае, просто удалите запятую, и она будет работать.

0 голосов
/ 01 ноября 2011

(я отвечаю на другой ваш вопрос, lol)

Во-первых, вы правы, говоря, что запятая сломала его, это был неверный синтаксис JSON.

Во-вторых, не поддерживаетIE 8 и ниже (я испытываю желание сказать, что вообще не поддерживаю IE, потому что он отстой, однако, очевидно, большая часть интернета все еще использует его)

В-третьих, вам нужно отладить это, чтобы понять это,взгляните на синтаксический анализ JSON (я думаю, $ .parseJSON ()).

Я мог бы показать вам, что именно не так и как это сделать, но более чем стоит потратить некоторое время на отладку javascript, открывконсоль в вашем браузере и использование console.log (VARIABLE);в вашем JS.Или используя оповещение (VARIABLE) в разное время).

например,

var setDefaults = function(inputElements) {
        $(inputElements).each(function() {
            var d = defaults[this.name];
            alert(d);
            if (d) {
                // set with jQuery
                // we don't need the data - just check on the class
                $(this).val(d)
                    .addClass('default_value');
            }
        });
    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...