HTML текстово поле с множество прекъсвания на редове onClick и onBlur функции

Имам текстово поле, в което поставям текст по подразбиране. Нека просто кажем, че текстът в текстовото поле по подразбиране е „Вмъкнете текст тук“.

Използвам функциите onClick и onBlur на JavaScript, за да направя така, че когато потребителят кликне върху текстовото поле с „Вмъкване на текст тук“. съобщение, съобщението ще изчезне и ще бъде заменено с празно място. Ако текстовото поле е празно и потребителят щракне върху него, отново текстовото поле ще покаже „Вмъкване на текст тук“. съобщение. Ето моят код за този процес:

<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 и стойността $textarea, използвана в методите onClick и onBlur. Стойността на $textarea между двата тагова е:

Line 1

Line 2

Докато стойността на $textarea в методите onBlur и onClick е:

Line 1\n\nLine 2

Явно тези двамата са неравностойни.

Знам какъв е проблемът, но не знам как да го оправя. Опитах да заменя \n с други алтернативи, но проблемът се свежда до факта, че \n се обработва между таговете, докато не се регистрира като нов ред в методите onBlur и onClick.

Някой има ли идеи за решаване на този проблем?

Благодаря!


person Charles    schedule 23.07.2012    source източник


Отговори (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>

Има много предимства на този метод:

Ще показва ВМЪКНЕТЕ ТЕКСТ ТУК всеки път, когато поставите курсора върху текстовото поле и това се използва и от facebook

person bugwheels94    schedule 23.07.2012
comment
Благодаря ви много за невероятно бързия отговор. От няколко часа скърцам със зъби по този въпрос, това е страхотно решение. Как обаче е съвместимостта между различни браузъри за това решение? В IE имам вградена функция, наречена изглед за съвместимост, която е създадена за уебсайтове, предназначени за по-стари браузъри. Въпреки че това работи чудесно в IE, когато включа изгледа за съвместимост, вече не работи. Ще опитам това и в Safari, Chrome и FireFox, когато се прибера от работа. Какво знаете за съвместимостта на браузъра за това решение? Много благодаря! - person Charles; 23.07.2012
comment
Добре. Ако премахна \n, с какво да го заменя, за да създам нов ред? - person Charles; 23.07.2012
comment
Поставям примерно писмо в текстовото поле. Така че в писмото ще имам нещо като: Скъпи Джон, Надявам се, че се справяш добре. Jill Както можете да видите, прекъсванията на редовете са необходими, за да форматирате правилно писмото. - person Charles; 25.07.2012