默认表单字段值清除除非唯一

时间:2014-01-28 23:16:08

标签: javascript jquery

有更好的方法吗?

我有一个表单字段。使用jQuery(因为我无法访问HTML),我需要将默认值设置为'Year / Make / Model',当字段获得焦点时,如果那里是文本,它就会消失。但如果它是自定义文本,那么该字段保持不变。

这是我写的代码......

var textVal = 'Year/Make/Model';

  $('form li:contains("Vehicle Details") input').attr('value', textVal).on('focus', function(){
    if ($(this).attr('value') == textVal)
      $(this).attr('value','');
  }).on('blur', function(){
    if ($(this).attr('value') == '')
      $(this).attr('value',textVal);
  });

http://jsfiddle.net/WVyf8/2

这有效,但我相当确定有更好的方法。我是JS的新手。请善待:)

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以多次访问DOM来提高性能

var textVal = 'Year/Make/Model';

  $('form li:contains("Vehicle Details") input').attr('value', textVal).on('focus', function(){
    var element = $(this); 
    if (element.attr('value') == textVal)
      element.attr('value','');
  }).on('blur', function(){
     var element = $(this); 
    if (element.attr('value') == '')
     element.attr('value',textVal);
  });

修改

您只需添加placeholder属性

即可

$('form li:contains("Vehicle Details") input').attr('placeholder', textVal);

但请注意,某些版本的IE

不支持此功能

答案 1 :(得分:0)

如果HTML 5没问题,我会使用内置的占位符功能。这是一个小提琴:

http://jsfiddle.net/CT5nV/3/

$('form li:contains("Vehicle Details") input').attr('placeholder', "year/make/model");