2012-07-04 3 views
1

В настоящее время я использую встроенный javascript для очистки значения входного текста по умолчанию. Если пользователь ничего не вводит, значение по умолчанию отображается размытым. Код выглядит следующим образом:jQuery Input Text Clear, Return to Default no Entry

onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;" 

Проблема заключается в том, что я должен добавить этот фрагмент кода для каждого отдельного ввода текста по всему сайту. Каким будет эквивалент jQuery этого, который автоматически сделает это для каждого ввода текста (: текст).

Я придумал следующее с двумя ошибками. (1) Он очищает любое значение, которое может иметь текстовое поле. Я хочу, чтобы он очистил его, если значение является значением attr по умолчанию. (2) Функция размытия не вставляет значение по умолчанию. Мне не хватает чего-то невероятно простого. Я совершенно уверен.

$(':text').focus(function() { 
      var value = $(this).val(); 
      var defval = $(this).attr('value'); 
      if(value == defval) { 
       $(this).val(''); 
      } 
     }); 
     $(':text').blur(function() { 
      var value = $(this).val(); 
      var defval = $(this).attr('value'); 
      if(value == '') { 
       $(this).val(defval); 
      } 
     }); 

Заранее благодарен!

+0

будет не $ (это) .val() и $ (это) .attr ('значение') дают то же самое? – richard

+0

@richard. Нет. '$ (This) .attr ('value')' даст вам содержимое внутри атрибута 'value', в то время как' $ (this) .val() 'даст вам фактическое значение. Пример: когда вы меняете значение текстового поля и смотрите исходный код, * он * не изменился. –

+0

Почему вы не используете плагин? – Andre

ответ

2

Я рекомендую использовать html5 placeholder вместо defaultValue и позволить современным браузерам справиться с этим, только отступая к JS в случае отсутствия поддержки заполнителя.

Во всяком случае, это простая реализация с использованием DefaultValue:

$('input[type="text"]').on({ 
    focus: function(){ 
     var $this = $(this); 
     if($this.val() === $this[0].defaultValue) $this.val(''); 
    }, 
    blur: function(){ 
     var $this = $(this); 
     if($this.val() === '') $this.val($this[0].defaultValue); 
    } 
}); 

Кроме того, я настоятельно рекомендую использовать плагин, как он обрабатывает все эти и некоторые возможные случаи угловых ...

Посмотри :

http://unwrongest.com/projects/defaultvalue/

+0

спасибо, например, код. Думаю, я буду использовать плагин. –