Javascript проверить / снять все функции.IE не обновляется - PullRequest
2 голосов
/ 01 декабря 2010
function checkUncheckAll(theElement) {
        var theForm = theElement.form, z = 0;
        while (theForm[z].type == 'checkbox' && theForm[z].name != 'checkall') {
                theForm[z].checked = theElement.checked;
                z++;
        }
}

theElement - флажок checkall внизу списка флажков.при нажатии вызывается эта функция, чтобы установить все флажки в одной форме на значение checkall.

Работает во всех браузерах, кроме одного сбоя в IE.После нажатия на флажок галочки кажется, что флажки обновлены, но вы его не видите.Если вы щелкнете где-нибудь на странице, флажки будут обновлены до их надлежащего статуса.Это происходит как для проверки, так и для снятия отметки.

Ответы [ 2 ]

9 голосов
/ 02 декабря 2010

Это легко без jQuery, который здесь не нужен.

function checkUncheckAll(theElement) {
    var formElements = theElement.form.elements;
    for (var i = 0, len = formElements.length, el; i < len; ++i) {
        el = formElements[i];
        if (el.type == "checkbox" && el != theElement) {
            el.checked = theElement.checked;
        }
    }
}

Обновление

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

4 голосов
/ 02 декабря 2010

Лучший способ сделать это - использовать jQuery .Это требует включения библиотеки, но оно того стоит!jQuery обрабатывает кросс-браузерные проблемы js / DOM и предоставляет превосходный синтаксис селектора и методы модификации.

Дополнительные примеры, подобные вашим, выделены в этом сообщении в блоге:

http://www.iknowkungfoo.com/blog/index.cfm/2008/7/9/Check-All-Checkboxes-with-JQuery

function checkUncheckAll(theElement){
    newvalue = $(theElement).is(':checked');  
    $("INPUT[type='checkbox']", theElement.form).attr('checked', newvalue);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...