单击后清除TEXTAREA值(onFocus)

时间:2011-02-17 18:34:15

标签: javascript html textarea onfocus

我正在使用..

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

清除我的textarea中的值以留下评论。但是,当您单击以输入注释并键入一些内容时,如果您要在框外单击以查看页面上的其他内容,然后再次单击textarea框返回到注释,则会清除当前输入

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

9 个答案:

答案 0 :(得分:8)

最好将指令放入标签标签,将其放在textarea上,然后隐藏它或在textarea聚焦时显示它。这样做的原因是因为您的textearea将填充说明,如果它们在表单中,可能会发送这些说明。

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

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

答案 1 :(得分: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);
            }
        });
    });
});

这将遍历站点上的所有textareas,并在单独的数据绑定中存储关于其清除状态的布尔值。 onclick事件也是针对每个textarea单独处理的,因此你可以在一个页面上有多个textarea / textarea清除,而不需要Javascript来破坏你的html。

答案 2 :(得分:1)

这将有助于

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

和onfocus html属性

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

答案 3 :(得分: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/

答案 4 :(得分:1)

我知道这已经很晚了,但对于遇到这个问题的其他人,我相信最简单的答案是

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

应该完全按照您的意愿行事,而不必存储/检查任何变量。

答案 5 :(得分:1)

相反,使用 HTML5 placeholder并为旧浏览器使用jquery插件。

此处运行示例: http://jsfiddle.net/dream2unite/xq2Cx/

<input type="text" name="email" id="email" placeholder="name@email.com">

必须附带以下脚本:

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

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

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

答案 6 :(得分:0)

在javascript中声明变量clearedOnce为false。在onfocus中,检查此变量。如果为false,则将其设置为true并清除textarea。所有后来的点击都不会做任何事代码:

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

答案 7 :(得分:0)

您可以使用全局页面var。

在元素

上方的script元素中
var tracker = {};

...后来

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

答案 8 :(得分:0)

所以我认为你有一个预填充值,比如“在这里输入你的文字”? 尝试添加此javascript:

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

然后,您的输入应该是: 在此输入您的文字

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