Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Скрипт JS для браузера.


Автор: kibec 7.8.2010, 22:46
Добрый день, возникла следующая проблема, есть поля.
Ошибся в названии темы, не для браузера, а просто скрипт.


Код

<form action="" method="post" name="editnews"> 
<input type="checkbox" name="selected_posts[]" value="6">
<input type="checkbox" name="selected_posts[]" value="7">
<input type="checkbox" name="selected_posts[]" value="8">
<input type="checkbox" name="selected_posts[]" value="XXXX">
</form>



Нужно, что бы при нажатии  номера 2 (или другого) , далее пролистываю до 90, и с шифтом нажимаю, отмечается весь массив, между этим пунктами...

То есть, по аналогии с sape, и других ресурсов.


Редактировать могу только подключаемый JS файл...

Заранее спасибо!!

Автор: Amphiluke 7.8.2010, 23:19
Где-то так… Наверное, можно сделать красивее, особенно если подключить библиотечку типа jQuery
Код

    var lastClicked = null;
    function chkClick(e) {
        if (!e) e = window.event;
        var sender = (e.target) ? e.target : e.srcElement;
        if (lastClicked && e.shiftKey) {
            var chks = document.getElementsByName("selected_posts[]");
            var firstChk = Math.min(parseInt(lastClicked.value), parseInt(sender.value));
            var lastChk = Math.max(parseInt(lastClicked.value), parseInt(sender.value));
            var curChk;
            for (var i = 0; i < chks.length; i++) {
                curChk = parseInt(chks[i].value);
                if ((curChk >= firstChk) && (curChk <= lastChk))
                    chks[i].checked = true;
            }
        } else {
            lastClicked = sender;
        }
    }
    window.onload = function() {
        var chks = document.getElementsByName("selected_posts[]");
        for (var i = 0; i < chks.length; i++) {
            if (chks[i].addEventListener) {
                chks[i].addEventListener("click", chkClick, false);
            } else {
                chks[i].attachEvent("onclick", chkClick);
            }
        }
    }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)