2011-02-17 208 views
5

我目前使用..清除TEXTAREA值点击(聚焦状态)

onfocus="this.value=''; return false;" 

清除我的文字区域内的值留下评论。但是,当您点击输入评论并输入一些内容时,如果您要在框外点击以阅读页面上的其他内容,然后再次点击textarea框内的内容以返回评论,则会清除当前输入。

有没有办法在初始点击时清除textarea,只是为了清除默认值而不是其他浏览器页面会话的其余点击?

回答

0

在javascript中声明变量clearedOnce,该值为false。在你的焦点上,检查这个变量。如果它是假的,则将其设置为true并清除textarea。所有以后的点击都无能为力。代码:

onfocus='if (!clearedOnce) { this.value = ''; clearedOnce = true;} return false;' 
+0

@Derek:应用你的建议编辑 – Andomar 2011-02-17 19:12:52

0

您可以使用全局页面var。

在元素

var tracker = {}; 

后来高于script元素...

<textarea name="a" onfocus="if(!tracker[this.name]) { tracker[this.name]=true; this.value=''; } return false;">Placeholder text</textarea> 
8

这是更好地把指令转换成一个标签标记,它正上方,textarea的,然后把它隐藏或如果textarea是关注的话,则显示它。原因是因为你的textearea将填充指令,如果它们在表单中,这些指令可能会被发送。

但是,解决你的问题,你需要做的是:

onfocus="if(this.value== "your initial text"){this.value=''}; return false;" 
+0

一个更好的版本会的onfocus =“如果(THIS.VALUE =此。 defaultValue){this.value =''}; return false;“ – KOGI 2011-02-17 18:43:31

1

这将有助于

function clearTA { 
    if(this.value != "type here") { 
     this.value = ''; 
     return false; 
    } 
} 

和聚焦状态HTML属性

...onfocus="clearTA()".. 
0

所以我想你有一个预先填好的值,如“在此输入您的文字”? 尝试添加此javascript:

function clearText(textarea,prefilled){ 
     if(textarea.value==prefilled) 
      textarea.value=""; 
     return false; 
    } 

然后,你输入应该是: 在这里输入

文字这应该让你开始...

1
<script type="text/javascript"> 
function clearOnInitialFocus (fieldName) { 
    var clearedOnce = false; 
    document.getElementById(fieldName).onfocus = (function() { 
    if (clearedOnce == false) { 
     this.value = ''; 
     clearedOnce = true; 
    } 
    }) 
} 
window.onload = function() { clearOnInitialFocus('myfield'); 
</script> 

来源:http://snipplr.com/view/2206/clear-form-field-on-first-focus/

1

我知道这是迟到,但对任何有这个问题的人,我相信最简单的答案是

onfocus="this.value=''; this.onfocus='';"

应该做的正是你想要的,而不必存储/查看任何变量。

3

我认为从内容分离逻辑是个好习惯。因此,使用jQuery(我们都使用jQuery,是吗?),你可以这样做:

$(document).ready(function() { 
    var _bCleared = false; 
    $('form textarea').each(function() 
    { 
     var _oSelf = $(this); 

     _oSelf.data('bCleared', false); 
     _oSelf.click(function() 
     { 
      if (!_oSelf.data('bCleared')) 
      { 
       _oSelf.val(''); 
       _oSelf.data('bCleared', true); 
      } 
     }); 
    }); 
}); 

这将遍历所有网站上的文字区域,并存储在一个单独的数据绑定他们明确状态的布尔值。 onclick事件也是针对每个textarea单独处理的,因此您可以在单个页面上使用多个textarea/textarea清除功能,并且不需要Javascript溅出您的html。

1

取而代之,使用HTML5placeholder并为旧版浏览器使用jquery插件。

运行例如这里: http://jsfiddle.net/dream2unite/xq2Cx/

<input type="text" name="email" id="email" placeholder="[email protected]"> 

必须通过以下脚本陪同:

$('input[placeholder], textarea[placeholder]').placeholder(); 

当你输入一个电子邮件文本(占位符)会消失,只有当你删除电子邮件将文本(占位符)重新出现。

最后,一个jQuery插件占位符的一个明显的例子就是这样一个: http://mathiasbynens.be/demo/placeholder