JS не знаю, по этому методом тыка, благо начальное знание PHP, C# и C++ помогают, вот такое соорудил: есть JS скрипт Код (Text): <script> function check() { var field = document.getElementById('test_field'); var span = document.getElementById('test_span'); if (field.value.length < 5) { span.innerHTML = 'Длина текста меньше 5 символов'; } else if (field.value.length > 10) { span.innerHTML = 'Длина текста больше 10 символов'; } else { var submit_button = document.getElementById('submit_button'); submit_button.removeAttribute('disabled'); span.innerHTML = 'Все ОК, можно отправлять'; } } </script> и форма Код (Text): <form method="post" > <textarea name="test_field" id="test_field"> </textarea> <br><span name="test_span" id="test_span"></span><br><br> <input type="button" name="check_button" id="check_button" onclick="check()" value="Проверить" /> <input type="submit" name="submit_button" id="submit_button" value="Отправить" disabled /> </form> В форме 2 кнопки, одна проверить введенные данные, вторая отправить их, изначально отправка заблокирована, если данные успешно прошли проверку кнопка разблокируется и можно отправлять, вопрос как эти 2 кнопки превратить в одну, что при нажатии осуществлялась проверка, если все ок, отправлялось (само, без повторного нажатия, так же как и при обыкновенном нажатии кнопки), а если нет не отправлялось, а выводило ошибки. action в форме на ту же страницу. Напишите пожалуйста.
Код (Text): <form id="myform"> Код (Text): document.getElementById('myform').submit(); Можно также сделать выполнение функции check(), которая разблокирует кнопку submit - при нажатии кнопок в textarea. Тогда вторая кнопка будет не нужна Код (Text): <textarea name="test_field" id="test_field" onkeyup="check();"> </textarea> Добавлено спустя 1 минуту 12 секунд: Об одном и том же
Спасибо, из ваших ответов я скомпоновал решение, оно не совсем такое как вы пишите, в частности, за счет: будет проверяться поле (поля) и в зависимости от заполнения кнопка будет активироваться / блокироваться, единственный недостаток, я не смогу очищать поля от HTML тегов. наверное тут ошибка, т.к. кнопка submit_button имеет тип submit ( type="submit" ) по-этому как не крути а отправка и так происходит. Можно в принципе поменять тип с submit на button, тогда все великолепно, но тогда в POST не попадает сама кнопка (submit_button), а заполнение формы как раз проверяется "по нажатию кнопки", с другой стороны выходом будет добавить скрытое поле и по нему уже судить "нажата кнопка или нет". Вообщем есть над чем поразмыслить, возможно все переделаю так, еще раз спасибо за информацию. А можно пользуясь случаем такой вопрос задать, регулярные выражения в PHP и JS одинаковые?
Ну да) Добавлено спустя 10 минут 42 секунды: Но я бы не советовал что-то резать из передаваемых данных)
почему нет? допустим есть ряд условий для данных, не больше не меньше и без HTML тегов, допустим пользователь вставил текст с HTML тегами и по длине они подходят, а если удалить, уже слишком короткое сообщение, надо бы его об этом уведомить, ни так ли? или как быть в подобной ситуации?
Ну ок, а если пользователь захочет вставить тег? Добавлено спустя 4 минуты 14 секунд: не больше я еще понимаю... не меньше - уже не совсем понимаю... html - тоже часть сообщения. Вот смотри: - Петя, какой тег отвечает за перенос строк? - <br /> Почему сообщение не может иметь такой вид?
еще как в книге для новичков писали что надо бояться HTML тегов, которые могут вставить посторонние лица, т.к. он может быть вредоносным, по этому и очищаем от тегов
Бояться, наверное, стоит, если эти теги не преобразовать в html сущности. Чтобы преобразовать строку в html-сущности воспользуйся функциями htmlspecialchars или htmlentities. Добавлено спустя 3 минуты 3 секунды: Но это уже при выводе данных...
ну при выводе, т.е. PHP тоже будет проверять все данные, на современных пользователей совсем нельзя положиться
Я к тому, что сообщения пользователя лучше хранить в базе в том виде, в каком он его написал. Можно, конечно, ограничить по кол-ву символов. Чтобы избежать XSS уязвимостей можно использовать функции, которые я написал выше. Проверять пыха на выводе информации ничего не будет, просто преобразуешь сообщение пользователя таким образом, чтобы специальные символы стали html сущностями и все - межсайтового скриптинга нет.
1. Есть поле которое не должно содержать HTML теги, зачем мне тогда хранить в БД данные с HTML? по меньшей мере это не разумно, т.к. это будет занимать больше места. 2. введенные данные должно соответствовать требованиям, в них не должно быть HTML тегов и длина не больше и не меньше, может с HTML оно будет соответствовать длине, а вот без них нет, для этого надо еще у пользователя очистить текст от HTML и сообщить ему о том что маловато символов, или зачем тогда проверять у пользователя, можно и все это сделать на стороне сервера при помощи PHP (хотя на стороне сервера оно и так тоже будет фильтроваться).
Ну просто я не совсем понимаю почему нельзя очищать при помощи JS еще у пользователя, кроме того "да пускай будет как хочет пользователь", какие опасности могут быть от этого?