2009-10-01 50 views
8

我正在制作一个简单的表单,大约有八个输入字段。我希望现场的初始值能够表明人们应该进入的内容。例如value =“name”,这样人们就知道在那里输入那里的名字。当我进入该领域时,如何让表格值消失?

虽然我的问题是,当他们进入该字段时,初始值是如何得到初始值消失的,以便初始值只是一个提示而不是永久值,在输入名称之前必须先擦除它们?

谢谢!

回答

21

将“默认”值设置为“名称”。然后,使用javascript和'onfocus'事件清除该字段。

所以你会:

<input type="textbox" value="Name" onfocus="if (this.value=='Name') this.value='';"/> 
+0

工作恰到好处。感谢您的快速响应! – fmz 2009-10-01 17:15:06

+0

记得通过点击投票下方的绿色勾号来选择答案为“接受”。 – 2009-10-01 17:38:06

3

基本的JavaScript:

<input type="text" value="name" onfocus='if(this.value=="name"){this.value="";}' /> 
6

这是你应该怎么做。

<input type="text" value="name" onfocus="this.value = this.value=='name'?'':this.value;" onblur="this.value = this.value==''?'name':this.value;"> 

如果他们点击它并点击默认值将返回。如果他们点击它并键入内容,它将不会尝试清除他们放回的内容,如果他们再次点击它。

31

更简单的方法也可能会被:

placeholder="Name" 
+0

我认为这个问题是它会删除输入的文字,这可能对用户不利。 – nicorellius 2013-02-12 18:03:10

+0

对占位符有很好的支持: http://caniuse.com/#feat=input-placeholder – 2015-01-20 15:14:08

1

只是对于s & G公司的,我想我会发布了该问题的可重复使用的jQuery的解决方案。

var formDefaulter=function(){ 
    //Class to hold each form element 
    var FormElement=function(element){ 
     var that=this; 
     this.element=element; 

     var initialVal=this.element.val(); 
     var isEdited=false; 

     this.element.focus(function(){clearBox()}); 
     this.element.blur(function(){fillBox()}); 

     var clearBox=function(){ 
      if(!isEdited){ 
       that.element.val(""); 
       isEdited=true; 
      } 
     } 
     var fillBox=function(){ 
      if(that.element.val()==""){ 
       that.element.val(initialVal); 
       isEdited=false; 
      } 
     } 
    } 

    var add=function(elementId){ 
     new FormElement($('#'+elementId)); 
    } 

    return{ 
     add:add 
    } 
}(); 

然后,你只需要使用ID属性值附加每个元素。像这样:

$(function(){ 
    formDefaulter.add('contact_name'); 
    formDefaulter.add('contact_email'); 
    formDefaulter.add('contact_msg'); 
}); 

如果内容被删除,这也会将表单元素重新填充其原始值。无论如何,希望这对某人有帮助。