Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.07.2010, 13:57
Новичок на форуме
Отправить личное сообщение для hereim Посмотреть профиль Найти все сообщения от hereim
 
Регистрация: 02.07.2010
Сообщений: 4

Очистка формы от дефолтных значений js
Всем добрый день, возник спор с программистом:
необходим очищать в полях формы дефолтные значения перед передачей на сервер, но программист требует делать это js, серверной части для этого нет.
Хочу услышать аргументы, почему это правильно и неправильно.
Я считаю что это в корне неправильно
Мои аргуметы - 1. не работает без js
2. js не должен выполнять такой функционал
3. если в дополнение к серверной части, то код становится избыточным, и просто не нужен(я не про проверку ошибок, а иммено об очистки слова Улица в поле Адресс, если оно там было по дефолту)
4. криво смотрятся поля, которые становятся пустыми при сабмите формы.

Если есть примеры с формами, в которых поля от дефолтных значений очищаются именно таким способом - скиньте , пожалуйста, ссылкку.

Спасибо, за советы
Ответить с цитированием
  #2 (permalink)  
Старый 02.07.2010, 14:07
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Вы не на том уровне проблему решаете. У вас проблема в том, что дефолтные значения не являются корректными. Насколько я понимаю, вы метки в поля засунули, т.е. они вообще значениями не являются. Надо просто не совать в поля то, что не может являться их значением.
Ответить с цитированием
  #3 (permalink)  
Старый 02.07.2010, 14:09
Новичок на форуме
Отправить личное сообщение для hereim Посмотреть профиль Найти все сообщения от hereim
 
Регистрация: 02.07.2010
Сообщений: 4

да, Вы правильно поняли. Ну а что делать в том случае, если в полях должны стоять метки
Ответить с цитированием
  #4 (permalink)  
Старый 02.07.2010, 14:09
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Метки должны оставаться тегом label, просто их можно спозиционировать над полем ввода. При этом можно и учесть включенность JS, посмотрите форму логина на морде Яндекса, например.
Ответить с цитированием
  #5 (permalink)  
Старый 03.07.2010, 07:55
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Kolyaj, по-моему ты не понял (ну или я чего-то не понял). Речь идет о том, что в поле с меткой Адрес вставляется слово Улица. Так вот его можно вставлять и убирать с помощью js, при этом не надо будет делать на сервере ненужный, не очень очевидный, привязанный к страничке код типа if( $_POST['address'] == 'Улица' ) unset($_POST['address']); Так что я голосую за программиста
Ответить с цитированием
  #6 (permalink)  
Старый 03.07.2010, 09:46
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

hereim,
Такая процедура по любому должна выполнятся на сервере. Привыкайте править все данные на сервере. То что приходит с клиента - доверять нельзя.
А вообще
Сообщение от Kolyaj
Метки должны оставаться тегом label, просто их можно спозиционировать над полем ввода.
На крайний случай сделать подсказку при фокусирвке в поле.
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #7 (permalink)  
Старый 03.07.2010, 12:12
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Подсказки, всё-таки, относятся к отображению, и их вычистка не должна происходить на сервере. Иное дело, что и засорять ими форму не стоит.
Я вижу три способа решения.
Первый - использовать аттрибут placehoder, но его, кажется, кроме вебкита никто не умеет.
Второй - предложенный Kolyaj.
Третий - вставлять-таки значения в элементы формы, но яваскриптом и из аттрибута title (или того же placeholder), а затем тщательно проверять onfocus и onblur и производить манипуляции со значением элемента.
Отлавливать события фокуса и блара для всех элементов можно через события onbeforeactivate и ondeactivate в ИЕ версии ниже 9 и через фазу capruring в нормальных браузерах.
Ответить с цитированием
  #8 (permalink)  
Старый 03.07.2010, 17:04
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от PeaceCoder
Такая процедура по любому должна выполнятся на сервере. Привыкайте править все данные на сервере. То что приходит с клиента - доверять нельзя.
при чем тут доверять/не доверять?
Ответить с цитированием
  #9 (permalink)  
Старый 04.07.2010, 09:25
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от x-yuri
Речь идет о том, что в поле с меткой Адрес вставляется слово Улица. Так вот его можно вставлять и убирать с помощью js, при этом не надо будет делать на сервере ненужный, не очень очевидный, привязанный к страничке код типа if( $_POST['address'] == 'Улица' ) unset($_POST['address']);
Вот это я точно не понял.
Ответить с цитированием
  #10 (permalink)  
Старый 04.07.2010, 09:55
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 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']);

который добавляет еще одну зависимость между страничкой (внешний вид) и обработчиком формы (контроллер) и без него можно обойтись
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Умножение численных значений формы ввода FastSP Общие вопросы Javascript 8 08.04.2012 20:45
Передать несколько значений из JS на сервер, методом POST балерун Общие вопросы Javascript 1 02.03.2010 14:36