【问题标题】:HTML Textarea With Multiple Lines Breaks onClick and onBlur Functions具有多行的 HTML 文本区域 onClick 和 onBlur 函数
【发布时间】:2012-07-23 16:55:30
【问题描述】:

我有一个文本区域,我将一些默认文本放入其中。假设默认的 textarea 文本是“在此处插入文本”。

我正在使用 JavaScript 的 onClick 和 onBlur 函数来实现,以便当用户单击带有“在此处插入文本”的文本区域时。消息,该消息将消失并由一个空格代替。如果 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 方法中注册为换行符。

有人有解决这个问题的想法吗?

谢谢!

【问题讨论】:

    标签: javascript html onclick textarea onblur


    【解决方案1】:

    给文本区域的标题赋予相同的默认值

      <?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>
    

    这种方法有很多优点:

    每当您将鼠标悬停在文本区域时,它都会在此处显示 INSERT TEXT,这也被 facebook 使用

    【讨论】:

    • 非常感谢您的快速回复。我已经为这个问题咬牙切齿了几个小时,这是一个很好的解决方案。但是,此解决方案的跨浏览器兼容性如何?在 IE 中,我有一个名为“兼容性视图”的内置功能,它是为“为旧浏览器设计的网站”而设计的。虽然这在 IE 中效果很好,但是当我打开兼容性视图时它不再起作用了。当我下班回家时,我也会在 Safari、Chrome 和 FireFox 上试试这个。您对此解决方案的浏览器兼容性了解多少?非常感谢!
    • 好的。如果我删除 \n,我用什么替换它来创建换行符?
    • 我在 textarea 中放入了一封示例信。所以在信中,我会说:亲爱的约翰,希望你一切都好。 Jill 如您所见,为了正确格式化字母,需要换行。
    猜你喜欢
    • 2011-10-20
    • 2019-02-21
    • 2017-02-11
    • 2015-06-09
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    相关资源
    最近更新 更多