5

我目前正在使用..

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

清除我的文本区域中的值以留下评论。但是,当您单击输入评论并输入一些内容时,如果您在框外单击可能会阅读页面上的其他内容,然后再次单击文本区域框内返回到您的评论,它会清除您当前的输入.

是否有清除初始点击时的文本区域只是为了清除默认值而不是浏览器页面会话的其余部分的其余点击?

4

9 回答 9

8

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

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

onfocus="if(this.value== "your initial text"){this.value=''}; return false;"
于 2011-02-17T18:39:17.270 回答
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。

于 2012-10-09T14:29:39.923 回答
1

这会有所帮助

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

和 onfocus html 属性

...onfocus="clearTA()"..
于 2011-02-17T18:39:20.890 回答
1

相反,使用HTML5placeholder并为旧浏览器使用 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

于 2013-07-10T06:36:47.653 回答
1

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

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

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

于 2012-07-23T19:02:48.307 回答
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/

于 2011-02-17T18:41:47.940 回答
0

clearedOnce在 javascript 中声明一个为 false 的变量。在您的 onfocus 中,检查此变量。如果为假,则将其设置为真并清除您的文本区域。以后的所有点击都不会执行任何操作。代码 :

onfocus='if (!clearedOnce) { this.value = ''; clearedOnce = true;} return false;'
于 2011-02-17T18:38:43.360 回答
0

您可以使用全局页面变量。

script元素之上的元素中

var tracker = {};

之后...

<textarea name="a" onfocus="if(!tracker[this.name]) { tracker[this.name]=true; this.value=''; } return false;">Placeholder text</textarea>
于 2011-02-17T18:38:46.897 回答
0

所以我认为您有一个预填充的值,例如“在此处输入您的文本”?尝试添加这个 javascript:

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

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

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

于 2011-02-17T18:40:39.380 回答