IE6: jQuery изменить назначение события для элементов управления - PullRequest
1 голос
/ 18 декабря 2009

Итак, у меня есть отличная функция, которая обнаруживает изменения для меня в форме:

function EnableChangeDetection(eForm) {

    // One of the nice benefits of this change detection is that we don't have
    //  to keep an additional array of previous values to compare.  Also we
    //  don't have to worry about applying global unformatting for comparison
    //  and formatting back

    // For each input control
    $("#" + eForm + " :input")
    // Add a change event that will trigger if the form has been changed
        .one("change", function() {

            $.jGrowl("Change detected...");

            // Flag the form with an IsDirty class
            $("#" + eForm)
                .attr("class", "IsDirty")

            // Now remove the event handler from all the elements
            // since you don't need it any more.
            $("#" + eForm + " :input")
                .unbind("change");
        });
}

Проблема заключается в том, что это изменение функционирует непоследовательно для входных данных без текстовых полей (флажки и переключатели) в IE. Работает нормально везде, конечно ...

1 Ответ

0 голосов
/ 19 декабря 2009

Вот мой обходной путь, который работал ...

function EnableChangeDetection(eForm) {

    // One of the nice benefits of this change detection is that we don't have
    //  to keep an additional array of previous values to compare.  Also we
    //  don't have to worry about applying global unformatting for comparison
    //  and formatting back

    // IE6 Workaround: onchange events need a blur event to properly fire
    $("#" + eForm + " :input[type='checkbox'], input[type='radio']")
        .one("click", function() { $(this).get(0).blur(); })

    // For each input control
    $("#" + eForm + " :input")
        // Add a change event that will trigger if the form has been changed
        .one("change", function() {

            $.jGrowl("Change detected...");

            // Flag the form with an IsDirty class
            $("#" + eForm)
                .attr("class", "IsDirty")

            // Now remove the event handler from all the elements
            //  since you don't need it any more.
            $("#" + eForm + " :input")
                .unbind("change");
        });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...