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();