Короче, есть интерфейс для "общения" с БД с кучей причиндалов, но в определённом месте у меня сложность, в том плане, что JS я совершенно не знаю и не понимаю, а тут видимо как раз его роль требуется, при чём весьма не сложная наверное. Задача такова: есть форма для отправки данных сценирию, в ней есть input поле класса textarea. Так вот от JS требуется вычислить количество введёных символов (желательно, чтобы это значение отображалось где-то на странице в реальном времени) и сравнить его с максимально допустимым, в случае, если это количество больше допустимого, кнопка submit должна стать неактивной. Т.е. кроме поля ввода и кнопки в форме дожна быть ячейка где указывается количество введёных символов из допустимых, в случае если первое превышает второе, кнопку нажать нельзя. Примечание: максимальное значение может быть в районе 65.535 символов, и сценарий не должен приходить в ужас от подобных чисел. Вот такая задача, понимаю, что совсем не сложная, но как это сделать? Не заю я JS, а это именно на клиентской стороне должно работать, как часть интерфейса. Помогите плз.
Код (Text): <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ПРЕВЕД!</title> <script type="text/javascript"><!-- function chk(fld,cnt,btn) { cnt = document.getElementById(cnt); btn = document.getElementById(btn); cnt.value = fld.value.length; btn.disabled = (parseInt(cnt.value) < parseInt(cnt.maxLength)) ? false : true; } //--></script> </head> <body> <form> <textarea style="width:300px" onKeyUp="chk(this,'counter','submitter')"></textarea> <br> <input id="counter" readonly maxlength="15" value="" style="width:100px"> <input id="submitter" type="submit" style="width:200px"> </form> </body> </html> значение-ограничитель задается в параметре "maxlength" поля счетчика
вопрос - а зачем такое надо??? это ведь не защита от некорректного ввода! я ведь всегда могу выкинуть яваскрипт со страницы и послать скрипту любые данные по get или post и если в скрипте нет проверки данных на валидность , данные уйдут в БД ...
Естественно это не заменяет проверок на сервере. Вероятно причины не менее двух - чуть-чуть "подсказать" юзеру, что он превысил лимит, а во вторых желание пустить немного "пыли в глаза" сделав как на взрослых сайтах, например при отправке SMS на сайте билайна.
Есть также атрибут maxlength для тегов input. Его защиту будет сложно обойти. Тем не менее, проверку на сервере делать необходимо.
Хм... Помилуйте, да это не защита накакая, просто сделано для удобства ввода: пользователь сразу видит, исчерпал он лимит или нет. Ни о какой защите речи не идёт, это уже php сценарий проверять будет корректность данных.