Очистка формы от дефолтных значений js
Всем добрый день, возник спор с программистом:
необходим очищать в полях формы дефолтные значения перед передачей на сервер, но программист требует делать это js, серверной части для этого нет. Хочу услышать аргументы, почему это правильно и неправильно. Я считаю что это в корне неправильно Мои аргуметы - 1. не работает без js 2. js не должен выполнять такой функционал 3. если в дополнение к серверной части, то код становится избыточным, и просто не нужен(я не про проверку ошибок, а иммено об очистки слова Улица в поле Адресс, если оно там было по дефолту) 4. криво смотрятся поля, которые становятся пустыми при сабмите формы. Если есть примеры с формами, в которых поля от дефолтных значений очищаются именно таким способом - скиньте , пожалуйста, ссылкку. Спасибо, за советы |
Вы не на том уровне проблему решаете. У вас проблема в том, что дефолтные значения не являются корректными. Насколько я понимаю, вы метки в поля засунули, т.е. они вообще значениями не являются. Надо просто не совать в поля то, что не может являться их значением.
|
да, Вы правильно поняли. Ну а что делать в том случае, если в полях должны стоять метки
|
Метки должны оставаться тегом label, просто их можно спозиционировать над полем ввода. При этом можно и учесть включенность JS, посмотрите форму логина на морде Яндекса, например.
|
Kolyaj, по-моему ты не понял (ну или я чего-то не понял). Речь идет о том, что в поле с меткой Адрес вставляется слово Улица. Так вот его можно вставлять и убирать с помощью js, при этом не надо будет делать на сервере ненужный, не очень очевидный, привязанный к страничке код типа if( $_POST['address'] == 'Улица' ) unset($_POST['address']); Так что я голосую за программиста
|
hereim,
Такая процедура по любому должна выполнятся на сервере. Привыкайте править все данные на сервере. То что приходит с клиента - доверять нельзя. А вообще Цитата:
|
Подсказки, всё-таки, относятся к отображению, и их вычистка не должна происходить на сервере. Иное дело, что и засорять ими форму не стоит.
Я вижу три способа решения. Первый - использовать аттрибут placehoder, но его, кажется, кроме вебкита никто не умеет. Второй - предложенный Kolyaj. Третий - вставлять-таки значения в элементы формы, но яваскриптом и из аттрибута title (или того же placeholder), а затем тщательно проверять onfocus и onblur и производить манипуляции со значением элемента. Отлавливать события фокуса и блара для всех элементов можно через события onbeforeactivate и ondeactivate в ИЕ версии ниже 9 и через фазу capruring в нормальных браузерах. |
Цитата:
|
Цитата:
|
как-то так
<input type="text" id="address"> <script type="text/javascript"> var hint = 'Улица'; var address = document.getElementById('address'); address.value = hint; document.forms[0].onsubmit = function(){ var address = document.getElementById('address'); if( address.value == hint ) address.value = ''; } address.onfocus = function(){ if( this.value == hint ) this.value = ''; } address.onblur = function(){ if( this.value == '' ) this.value = hint; } </script> иначе на сервере нужен код типа if( $_POST['address'] == 'Улица' ) unset($_POST['address']); который добавляет еще одну зависимость между страничкой (внешний вид) и обработчиком формы (контроллер) и без него можно обойтись |
Часовой пояс GMT +3, время: 21:35. |