Mar 12

Возникла потребность в примитивном фильтровщике ввода в текстовое поле, без учета вставки из буффера..
<input type=”text” onkeypress=”valueFilter(event, [0,1,2,3,4,5,6,7,8,9])” />

пример в действии (допустимы только числовые сиволы):

Сорцы внутри. Continue reading »

Mar 11

ie achtung!Пытался дибажить пару дней странное “Не удалось открыть узел, операция прервана” от IE во время запуска примитивного js скрипта.. Оказывается IE не переваривает добавление элементов на лету, пока DOM до конца не сформирован и тупо клозит, указывая на стену.. Причем любит клозить на SCRIPT и IFRAME тегах больше, чем в остальных случаях :) В итоге меня устроил вариант с document.write(..).

Из альтернатив window.onload( function() {..} ), но обламывает ждать полную загрузку страницы с картинками, либо
setTimeout(function () { document.body.appendChild(el); }, 0);, тут уже вставка произойдет без дожидания загрузки всех дополнительных элементов страницы.. Также есть готовые решения проверки загруженности DOM’a в популярных фреймворках типа Prototype и jQuery..

Mar 02

Накидал простенькую ф-ию для сортировки хешей (associative arrays)  по значению. Все примитивно и тюнится под свои нужды :)

<script>
    function asort(arr) {
        var numArr = new Array; // values
        var map = new Array;    // index => values array
        var out = new Array;

        for(k in arr) {
            numArr[numArr.length] = arr[k];
            if(map[arr[k]] == undefined) map[arr[k]] = new Array;
            map[arr[k]].push(k);
        }
        numArr.sort( function(a, b) { return (b-a); } ); //desc

        for(var i=0; i<numArr.length; i++) {
            for(var j=0; j<map[numArr[i]].length; j++) {
                out[map[numArr[i]][j]] = numArr[i];
            }
        }
        return out;
    }
</script>