我有一个textarea,我在其中放入一些默认文本。我们只是说默认的textarea文本是“在这里插入文本”。
我正在使用JavaScript onClick和onBlur函数来实现它,以便当用户点击带有“在此处插入文本”的textarea时。消息,消息将消失并被空格替换。如果textarea为空并且用户点击它,则textarea将再次显示“在此处插入文本”。信息。这是我的代码:
<textarea onclick="if(this.value=='Insert Text Here.'){this.value=''}" onblur="if(this.value==''){this.value='Insert Text Here.'}">Insert Text Here.</textarea>
此代码工作得很好。 “在此处插入文本”时会出现此问题。被替换为由多行组成的东西。例如:
<? $textarea = "Line 1\n\nLine 2"; ?>
<textarea onclick="if(this.value=='<? echo $textarea ?>'){this.value=''}" onblur="if(this.value==''){this.value=<? echo $textarea ?>'}"><? echo $textarea ?></textarea>
在这种情况下,onClick和onBlur命令被破坏,因为两个textarea标记之间的$ textarea值与onClick和onBlur方法中使用的$ textarea值之间存在不等式。两个标签之间的$ textarea值为:
Line 1
Line 2
而onBlur和onClick方法中$ textarea的值为:
Line 1\n\nLine 2
显然,这两者是不平等的。
我知道问题是什么,但我不知道如何修复它。我尝试用其他替代方法替换\ n,但问题归结为\ n在标记之间处理,而在onBlur和onClick方法中没有注册为换行符。
有没有人有任何想法来解决这个问题?
谢谢!
答案 0 :(得分:1)
为textarea的标题提供相同的默认值
<?php $textarea = "Line 1\n\nLine 2"; ?>
<textarea onclick="if(this.value==this.title){this.value=''}" onblur="if(this.value==''){this.value=this.title}" title="<?php echo $textarea ?>"><?php echo $textarea ?></textarea>
这种方法有很多优点:
每次鼠标悬停在textarea上时都会显示INSERT TEXT,这也是facebook使用的