具有多行的HTML Textarea打破onClick和onBlur函数

时间:2012-07-23 16:55:30

标签: javascript html onclick textarea onblur

我有一个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方法中没有注册为换行符。

有没有人有任何想法来解决这个问题?

谢谢!

1 个答案:

答案 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使用的