我正在使用..
onfocus="this.value=''; return false;"
清除我的textarea中的值以留下评论。但是,当您单击以输入注释并键入一些内容时,如果您要在框外单击以查看页面上的其他内容,然后再次单击textarea框返回到注释,则会清除当前输入
有没有在初始点击时清除textarea只是为了清除默认值而不是其余浏览器页面会话的其余点击?
答案 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;
}
然后,您的输入应该是: 在此输入您的文字
这应该让你开始......