我目前使用..清除TEXTAREA值点击(聚焦状态)
onfocus="this.value=''; return false;"
清除我的文字区域内的值留下评论。但是,当您点击输入评论并输入一些内容时,如果您要在框外点击以阅读页面上的其他内容,然后再次点击textarea框内的内容以返回评论,则会清除当前输入。
有没有办法在初始点击时清除textarea,只是为了清除默认值而不是其他浏览器页面会话的其余点击?
我目前使用..清除TEXTAREA值点击(聚焦状态)
onfocus="this.value=''; return false;"
清除我的文字区域内的值留下评论。但是,当您点击输入评论并输入一些内容时,如果您要在框外点击以阅读页面上的其他内容,然后再次点击textarea框内的内容以返回评论,则会清除当前输入。
有没有办法在初始点击时清除textarea,只是为了清除默认值而不是其他浏览器页面会话的其余点击?
在javascript中声明变量clearedOnce
,该值为false。在你的焦点上,检查这个变量。如果它是假的,则将其设置为true并清除textarea。所有以后的点击都无能为力。代码:
onfocus='if (!clearedOnce) { this.value = ''; clearedOnce = true;} return false;'
您可以使用全局页面var。
在元素
var tracker = {};
后来高于script
元素...
<textarea name="a" onfocus="if(!tracker[this.name]) { tracker[this.name]=true; this.value=''; } return false;">Placeholder text</textarea>
这是更好地把指令转换成一个标签标记,它正上方,textarea的,然后把它隐藏或如果textarea是关注的话,则显示它。原因是因为你的textearea将填充指令,如果它们在表单中,这些指令可能会被发送。
但是,解决你的问题,你需要做的是:
onfocus="if(this.value== "your initial text"){this.value=''}; return false;"
一个更好的版本会的onfocus =“如果(THIS.VALUE =此。 defaultValue){this.value =''}; return false;“ – KOGI 2011-02-17 18:43:31
这将有助于
function clearTA {
if(this.value != "type here") {
this.value = '';
return false;
}
}
和聚焦状态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>
来源:http://snipplr.com/view/2206/clear-form-field-on-first-focus/
我知道这是迟到,但对任何有这个问题的人,我相信最简单的答案是
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);
}
});
});
});
这将遍历所有网站上的文字区域,并存储在一个单独的数据绑定他们明确状态的布尔值。 onclick事件也是针对每个textarea单独处理的,因此您可以在单个页面上使用多个textarea/textarea清除功能,并且不需要Javascript溅出您的html。
取而代之,使用HTML5的placeholder
并为旧版浏览器使用jquery插件。
运行例如这里: http://jsfiddle.net/dream2unite/xq2Cx/
<input type="text" name="email" id="email" placeholder="[email protected]">
必须通过以下脚本陪同:
$('input[placeholder], textarea[placeholder]').placeholder();
当你输入一个电子邮件文本(占位符)会消失,只有当你删除电子邮件将文本(占位符)重新出现。
最后,一个jQuery插件占位符的一个明显的例子就是这样一个: http://mathiasbynens.be/demo/placeholder
@Derek:应用你的建议编辑 – Andomar 2011-02-17 19:12:52