вот в этом посте я привел в пример библиотеку, которая все это учитывает, более подробно о ней можно почитать тут: http://javascript.ru/forum/project/3...rea-input.html
|
Цитата:
Array.prototype.foreach=function(f){ for(var i=0; i<this.length; i++) f(this[i]) } arr=[] i=10000 while(i--){arr.push(i)} tst=function(x){return x + 1} console.time("forEach") arr.forEach(tst) console.timeEnd("forEach") console.time("foreach") arr.foreach(tst) console.timeEnd("foreach") // forEach: 58ms // foreach: 1ms |
Цитата:
Array.prototype.foreach = function (callback, thisArg) { var T, k; if (this == null) { throw new TypeError(' this is null or not defined'); } // 1. Положим O равным результату вызова ToObject passing the |this| value as the argument. var O = Object(this); // 2. Положим lenValue равным результату вызова внутреннего метода Get объекта O с аргументом "length". // 3. Положим len равным ToUint32(lenValue). var len = O.length >>> 0; // 4. Если IsCallable(callback) равен false, выкинем исключение TypeError. // Смотрите: [url]http://es5.github.com/#x9.11[/url] if (typeof callback !== 'function') { throw new TypeError(callback + ' is not a function'); } // 5. Если thisArg присутствует, положим T равным thisArg; иначе положим T равным undefined. if (arguments.length > 1) { T = thisArg; } // 6. Положим k равным 0 k = 0; // 7. Пока k < len, будем повторять while (k < len) { var kValue; // a. Положим Pk равным ToString(k). // Это неявное преобразование для левостороннего операнда в операторе in // b. Положим kPresent равным результату вызова внутреннего метода HasProperty объекта O с аргументом Pk. // Этот шаг может быть объединён с шагом c // c. Если kPresent равен true, то if (k in O) { // i. Положим kValue равным результату вызова внутреннего метода Get объекта O с аргументом Pk. kValue = O[k]; // ii. Вызовем внутренний метод Call функции callback с объектом T в качестве значения this и // списком аргументов, содержащим kValue, k и O. callback.call(T, kValue, k, O); } // d. Увеличим k на 1. k++; } // 8. Вернём undefined. }; arr=[] i=10000 while(i--){arr.push(i)} tst=function(x){return x + 1} console.time("forEach") arr.forEach(tst) console.timeEnd("forEach") console.time("foreach") arr.foreach(tst) console.timeEnd("foreach") // Chrome: // forEach: 1.000ms // foreach: 1.000ms |
Цитата:
Цитата:
Для наитупейшего обхода элементов массива задействовать машину регулярных выражений - это победа :victory: . |
Цитата:
|
Цитата:
form.addEventListener('input',validate); и вперде в инпуте есть тип - тот самый number. Если брауз - копенгаген, то все само будет работать, а если туп - то вы берете getAttribute('type') и получаете number и, соответственно, проверяете по своему любимому паттерну. Это геморройный способ сугубой сраной оптимизации. Легкая избыточность данных существенно все облегчает - х на type, он вообще может быть любым - пишите в pattern свой паттерн и JS вам проверит все что угодно по этому паттерну. Ну, если бразуер тупит. |
Так вот, у меня тоже есть вопрос - а возможно ли перевести взад на человеческий язык криптографию регулярного выражения?
Например if(len && input.pattern && !new RegExp(input.pattern).test(value)) throw 'Здесь '+input.errmsg; Чтобы сообщить что-то осмысленное, а не просто типа "введите перпендикулярно", приходится в том же месте откуда берутся паттерны задавать сообщения об ошибках проверки по паттерну - errmsg. А было бы круто чтобы программа сама, разобралась в требованиях шаблона проверки и написала, типа: Здесь минимум 3 символа, которые должны быть все печатными. |
Цитата:
Понятно откуда ноги воняют? На фронтире, типа, усе сразу получить _правильно_ и тогда налаживать обратную связь и не надо. Лафа! Так вот вполне понятно что без всякого текстового поля можно обойтись и захерачить ему какие хочешь нахуй буквы вместо цифр и посмотреть как сервер чмокнет. ЗЫ Не должен js заниматься санитарией. Потому что обойти его ленточки - как два пальца об асфальт. Вся санитария будет только на сервере, который и сообщит что юзер ввел не перпедикулярно. JS может только проверить и написать что ввели хуйню, по сему факту задизаблить сабмит формы и все такое. Но корежить данные - не должен. Что отправилось - на то сервер только отвечает. |
Часовой пояс GMT +3, время: 20:28. |