Текстовая область HTML с несколькими разрывами строк Функции onClick и onBlur

У меня есть текстовая область, в которую я помещаю текст по умолчанию. Скажем так, текст текстовой области по умолчанию — «Вставить текст здесь».

Я использую функции JavaScript onClick и onBlur, чтобы сделать так, чтобы когда пользователь нажимал на текстовую область с помощью «Вставить текст здесь». сообщение, оно исчезнет и будет заменено пустым пространством. Если текстовое поле пусто и пользователь щелкает его, снова в текстовом поле будет отображаться «Вставить текст сюда». сообщение. Вот мой код для этого процесса:

<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
Я помещаю образец письма в текстовое поле. Итак, в письме у меня будет что-то вроде: Дорогой Джон, Надеюсь, у тебя все хорошо. Джилл Как видите, для правильного форматирования письма необходимы разрывы строк. - person Charles; 25.07.2012