02.07.2010, 13:57
|
Новичок на форуме
|
|
Регистрация: 02.07.2010
Сообщений: 4
|
|
Очистка формы от дефолтных значений js
Всем добрый день, возник спор с программистом:
необходим очищать в полях формы дефолтные значения перед передачей на сервер, но программист требует делать это js, серверной части для этого нет.
Хочу услышать аргументы, почему это правильно и неправильно.
Я считаю что это в корне неправильно
Мои аргуметы - 1. не работает без js
2. js не должен выполнять такой функционал
3. если в дополнение к серверной части, то код становится избыточным, и просто не нужен(я не про проверку ошибок, а иммено об очистки слова Улица в поле Адресс, если оно там было по дефолту)
4. криво смотрятся поля, которые становятся пустыми при сабмите формы.
Если есть примеры с формами, в которых поля от дефолтных значений очищаются именно таким способом - скиньте , пожалуйста, ссылкку.
Спасибо, за советы
|
|
02.07.2010, 14:07
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Вы не на том уровне проблему решаете. У вас проблема в том, что дефолтные значения не являются корректными. Насколько я понимаю, вы метки в поля засунули, т.е. они вообще значениями не являются. Надо просто не совать в поля то, что не может являться их значением.
|
|
02.07.2010, 14:09
|
Новичок на форуме
|
|
Регистрация: 02.07.2010
Сообщений: 4
|
|
да, Вы правильно поняли. Ну а что делать в том случае, если в полях должны стоять метки
|
|
02.07.2010, 14:09
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Метки должны оставаться тегом label, просто их можно спозиционировать над полем ввода. При этом можно и учесть включенность JS, посмотрите форму логина на морде Яндекса, например.
|
|
03.07.2010, 07:55
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Kolyaj, по-моему ты не понял (ну или я чего-то не понял). Речь идет о том, что в поле с меткой Адрес вставляется слово Улица. Так вот его можно вставлять и убирать с помощью js, при этом не надо будет делать на сервере ненужный, не очень очевидный, привязанный к страничке код типа if( $_POST['address'] == 'Улица' ) unset($_POST['address']); Так что я голосую за программиста
|
|
03.07.2010, 09:46
|
|
Профессор
|
|
Регистрация: 15.12.2009
Сообщений: 742
|
|
hereim,
Такая процедура по любому должна выполнятся на сервере. Привыкайте править все данные на сервере. То что приходит с клиента - доверять нельзя.
А вообще
Сообщение от Kolyaj
|
Метки должны оставаться тегом label, просто их можно спозиционировать над полем ввода.
|
На крайний случай сделать подсказку при фокусирвке в поле.
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
|
|
03.07.2010, 12:12
|
|
Пионэр
|
|
Регистрация: 16.11.2009
Сообщений: 1,322
|
|
Подсказки, всё-таки, относятся к отображению, и их вычистка не должна происходить на сервере. Иное дело, что и засорять ими форму не стоит.
Я вижу три способа решения.
Первый - использовать аттрибут placehoder, но его, кажется, кроме вебкита никто не умеет.
Второй - предложенный Kolyaj.
Третий - вставлять-таки значения в элементы формы, но яваскриптом и из аттрибута title (или того же placeholder), а затем тщательно проверять onfocus и onblur и производить манипуляции со значением элемента.
Отлавливать события фокуса и блара для всех элементов можно через события onbeforeactivate и ondeactivate в ИЕ версии ниже 9 и через фазу capruring в нормальных браузерах.
|
|
03.07.2010, 17:04
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от PeaceCoder
|
Такая процедура по любому должна выполнятся на сервере. Привыкайте править все данные на сервере. То что приходит с клиента - доверять нельзя.
|
при чем тут доверять/не доверять?
|
|
04.07.2010, 09:25
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от x-yuri
|
Речь идет о том, что в поле с меткой Адрес вставляется слово Улица. Так вот его можно вставлять и убирать с помощью js, при этом не надо будет делать на сервере ненужный, не очень очевидный, привязанный к страничке код типа if( $_POST['address'] == 'Улица' ) unset($_POST['address']);
|
Вот это я точно не понял.
|
|
04.07.2010, 09:55
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
как-то так
<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']);
который добавляет еще одну зависимость между страничкой (внешний вид) и обработчиком формы (контроллер) и без него можно обойтись
|
|
|
|