2012-05-03 76 views
2
 $('input[class*="defaulttext"]').each(function() { 

        this.value = $(this).attr('title'); 
        $(this).addClass('defaultclass'); 

        $(this).focus(function() { 
         if (this.value == $(this).attr('title')) { 
          this.value = ''; 
          $(this).removeClass('defaultclass'); 
         } 
        }); 

        $(this).blur(function() { 
        if (this.value == '') { 
         this.value = $(this).attr('title'); 
         $(this).addClass('defaultclass'); 
        } 
       }); 


       }); 

这基本上增加了文本框的背景文本效果(使用标题)。一旦选中,文字就会消失。jquery从提交文本框中删除默认文本

现在,我有一个可选字段的问题。如果用户不编辑这些字段,则默认背景文本将随表单一起提交。因此,我需要在表单提交后重置未编辑字段的值。任何想法如何做到这一点?

也许在表单提交,检查标题=值?如果是,则设置为“'。

+1

你不加入“背景文字”,实际上是设置该字段的值。为什么不使用HTML5 [占位符](https://developer.mozilla.org/en/HTML/Element/input#attr-placeholder)属性? – j08691

+0

j08691 - 很好的建议,但你也必须记住,大多数用户不使用支持它的现代浏览器。 – naspinski

+0

对占位符属性不熟悉。将调查它,谢谢。 – domino

回答

1

根据你的代码可能标志着你编辑的字段,你可以这样做:

$("#yourForm").submit(function() { 
    $('input[class*="defaulttext"]').val(""); 
}; 
+1

这不会清空所有的输入,包括那些已经填满的输入吗? – aldux

+0

Nah因为在他的'blur'函数中,他添加并删除默认类,如果它有一个值。 – mattytommo

+0

这是正确的!我错过了。 – aldux

0
$("#yourForm").submit(function() { 
    $('input.defaulttext').each(function() { 
     if($(this).val() === $(this).attr('title')) { $(this).val(''); } 
    }); 
};