清除文本的Jquery.focus()将保留textarea中的默认文本
因此,我在文本区域上有一个.live()单击事件,允许用户留下评论。 我也有这个Jquery函数来清除默认文本“留下评论…”并解除事件绑定,就像用户再次单击文本区域时,他们的评论不会被删除一样 下面是函数清除文本的Jquery.focus()将保留textarea中的默认文本,jquery,Jquery,因此,我在文本区域上有一个.live()单击事件,允许用户留下评论。 我也有这个Jquery函数来清除默认文本“留下评论…”并解除事件绑定,就像用户再次单击文本区域时,他们的评论不会被删除一样 下面是函数 $('#comment-textarea').live('click', function(e) { $(this).text(''); $(this).unbind(e); }); 但是,当用户提交该命令时,默认文本将被提交,即使该文本已清除,并且用户输入了
$('#comment-textarea').live('click', function(e) {
$(this).text('');
$(this).unbind(e);
});
但是,当用户提交该命令时,默认文本将被提交,即使该文本已清除,并且用户输入了自己的文本。我认为这是导致这一点的未绑定事件,但我也这样写
$('#comment-textarea').live('click', function(e) {
if($(this).text() == 'Leave a comment') {
$(this).text('');
}
});
但它仍然提交了最初的文本。以前有人碰到过这个吗
***编辑
所以100%确定jquery事件没有绑定到屏幕视图之外的元素。如果在div中向下滚动,则div底部下方和视图之外的任何内容都不会起任何作用。因为您应该使用
val()
,而不是text()
是一个HTML表单控件,对于表单控件,可以使用val()
函数获取它们的当前值,或者使用val(x)
函数设置它们的当前值
$('#comment-textarea').live('click', function(e) {
$(this).val('');
$(this).unbind(e);
});
因为您应该使用
val()
,而不是text()
是一个HTML表单控件,对于表单控件,可以使用val()
函数获取它们的当前值,或者使用val(x)
函数设置它们的当前值
$('#comment-textarea').live('click', function(e) {
$(this).val('');
$(this).unbind(e);
});
替换所有的
$(this).text(“”)代码>与$(this).val(“”)代码>替换所有的$(此).text(“”)代码>与$(this).val(“”)代码>使用.val
而不是.text
。另外,.one
是触发一次事件的更好解决方案:
$('#comment-textarea').one('focus', function(e) {
$(this).val('');
});
另外,看看HTML5中的占位符属性(它在没有JS的现代浏览器中实现了相同的功能):
使用.val
而不是.text
。另外,.one
是触发一次事件的更好解决方案:
$('#comment-textarea').one('focus', function(e) {
$(this).val('');
});
另外,看看HTML5中的占位符属性(它在没有JS的现代浏览器中实现了相同的功能):
我会使用plus和来支持旧浏览器,并编写更多的语义代码
<textarea placeholder="Leave a comment..."></textarea>
就这样 我会使用plus和来支持旧浏览器,并编写更多的语义代码
<textarea placeholder="Leave a comment..."></textarea>
就这样 我已经试过了,但是我注意到现在我再看一遍,它只适用于第一个注释框,其余的保留默认文本。我将尝试Alex建议的方法,看看是否有帮助再次失败,注释将加载到带有滚动条的div中。看起来只有视图中的注释框接受注释。当我滚动时,它不起作用。我已经试过了,但是我注意到现在我再次查看它,它只对第一个注释框起作用,然后其余的保留默认文本。我将尝试Alex建议的方法,看看是否有帮助再次失败,注释将加载到带有滚动条的div中。看起来只有视图中的注释框接受注释。当我滚动时,它不会。