Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击后清除文本区域值(焦点)_Javascript_Html_Textarea_Onfocus - Fatal编程技术网

Javascript 单击后清除文本区域值(焦点)

Javascript 单击后清除文本区域值(焦点),javascript,html,textarea,onfocus,Javascript,Html,Textarea,Onfocus,我目前正在使用 onfocus="this.value=''; return false;" 清除my textarea中用于留下评论的值。但是,当您单击以输入注释并键入一些内容时,如果您要在框外单击以阅读页面上的其他内容,然后通过再次单击文本区域框内的内容返回到您的注释,则会清除当前的输入 是否需要在初次单击时清除文本区域以清除默认值,而不是浏览器页面会话剩余部分的其余单击?在javascript中声明一个变量clearedOnce,该变量为false。在onfocus中,检查此变量。如果为

我目前正在使用

onfocus="this.value=''; return false;"
清除my textarea中用于留下评论的值。但是,当您单击以输入注释并键入一些内容时,如果您要在框外单击以阅读页面上的其他内容,然后通过再次单击文本区域框内的内容返回到您的注释,则会清除当前的输入


是否需要在初次单击时清除文本区域以清除默认值,而不是浏览器页面会话剩余部分的其余单击?

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

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

您可以使用全局页面变量

在元素上方的
脚本
元素中

var tracker = {};
后来

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

最好将指令放入标签标签中,将其放置在文本区域上,然后隐藏或显示文本区域(如果文本区域已聚焦)。这是因为您的textearea将填充指令,如果指令在表单中,则可能会被发送

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

onfocus="if(this.value== "your initial text"){this.value=''}; return false;"
这会有帮助的

function clearTA {
   if(this.value != "type here") {
      this.value = ''; 
      return false;
   }
}
和onfocus html属性

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

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

    function clearText(textarea,prefilled){
        if(textarea.value==prefilled)
            textarea.value="";
        return false;
    }
然后,您的输入应该是: 在此处输入您的文本

这应该让你开始…


<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>
函数clearOnInitialFocus(字段名){ var clearedOnce=假; document.getElementById(fieldName).onfocus=(函数(){ if(clearedOnce==false){ 这个值=“”; clearedOnce=真; } }) } window.onload=function(){clearninitialfocus('myfield');

资料来源:

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

onfocus=“this.value=”;this.onfocus=”;


不必存储/检查任何变量,就可以完全执行您想要的操作。

我认为将逻辑与内容分离是一个好习惯。因此,使用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);
            }
        });
    });
});

这将迭代站点上的所有textarea,并在单独的数据绑定中存储有关其清除状态的布尔值。onclick事件也会对每个textarea单独处理,因此您可以在单个页面上清除多个textarea/textarea,而无需Javascript对html进行飞溅。

相反,请使用HTML5的
占位符
,并为旧浏览器使用jquery插件

此处的运行示例:

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

最后,占位符jquery插件的一个明显的好例子是:

更好的版本应该是onfocus=“if(this.value=this.defaultValue){this.value=''''};return false;”@KOGI如果您键入内容,然后在框外单击,然后返回,您的代码将清除目前键入的内容,这将导致原始问题。@MadushM-不,实际上不会。请注意
if(this.value==this.defaultValue)
这是一个检查,以查看文本框的值是否与加载页面时的值相同。如果更改了文本框,则不会清除文本框。
<input type="text" name="email" id="email" placeholder="name@email.com">
$('input[placeholder], textarea[placeholder]').placeholder();