Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Отправка вместе с тегами (https://javascript.ru/forum/misc/45401-otpravka-vmeste-s-tegami.html)

lamberdd 27.02.2014 01:05

Отправка вместе с тегами
 
Hi. Есть textarea, в неё вписывают текст(и вместе с html тегами). Как мне сделать так, чтобы эти теги тоже передавались как обычный текст. Спс

Vlasenko Fedor 27.02.2014 01:13

в смысле
<textarea id='txt'>
      <b>Hi</b>
    </textarea>
    <button onclick='showvalue()'>ClickMe</button>
    <script>
      showvalue = function () {
        alert(txt.value);
        document.write(txt.value);
      }
    </script>

kostyanet 27.02.2014 05:39

Ничего не надо делать. Поля ввода не понимают хтлм, теги для полей ввода обычный текст.

lamberdd 27.02.2014 15:01

Цитата:

Сообщение от Poznakomlus (Сообщение 299728)
в смысле
<textarea id='txt'>
      <b>Hi</b>
    </textarea>
    <button onclick='showvalue()'>ClickMe</button>
    <script>
      showvalue = function () {
        alert(txt.value);
        document.write(txt.value);
      }
    </script>

не совсем, чтобы типо document.write тоже с тегами текст отобразил (<b>Hi</b>) , а не Hi

ksa 27.02.2014 16:10

Цитата:

Сообщение от lamberdd
чтобы типо document.write тоже с тегами текст отобразил

Как вариант...

<textarea id='txt'>
	<b>Hi</b>
</textarea>
<button onclick='showvalue()'>ClickMe</button>
<script>
showvalue = function () {
	var val=txt.value.replace(/</g,'&lt;').replace(/>/g,'&gt;');
	document.write(val);
};
</script>

lamberdd 27.02.2014 16:14

Цитата:

Сообщение от ksa (Сообщение 299828)
Как вариант...

<textarea id='txt'>
	<b>Hi</b>
</textarea>
<button onclick='showvalue()'>ClickMe</button>
<script>
showvalue = function () {
	var val=txt.value.replace(/</g,'&lt;').replace(/>/g,'&gt;');
	document.write(val);
};
</script>

Я так тоже думал. Но подумал просто может есть альтернативный вариант

danik.js 27.02.2014 16:20

ksa, чтоб тебе регулярки каждую ночь снились!!!

<textarea id='txt'>
      <b>Hi</b>
    </textarea>
    <button onclick='showvalue()'>ClickMe</button>
    <script>
      showvalue = function () {
          document.body.textContent = txt.value;
      }
    </script>


IE9+ а если нужна восьмерка, то можно использовать .innerText

danik.js 27.02.2014 16:21

<textarea id='txt'>
      <b>Hi</b>
    </textarea>
    <button onclick='showvalue()'>ClickMe</button>
    <script>
      showvalue = function () {
          var text = txt.value;
          document.body.innerHTML = '';
          document.body.appendChild(document.createTextNode(text));
      }
    </script>

danik.js 27.02.2014 16:24

А че все ключевое слово var попроебали? (и я в том числе)

lamberdd 27.02.2014 16:50

danik.js
А если это значение надо в переменную передать?

danik.js 27.02.2014 17:46

Цитата:

Сообщение от lamberdd
А если это значение надо в переменную передать?

чё?

alex33 27.02.2014 18:02

Цитата:

Сообщение от lamberdd (Сообщение 299837)
danik.js
А если это значение надо в переменную передать?

Вот я придумал ещё вариант:
<textarea id='txt'>
	<b>Hi</b>
</textarea>
<button onclick='showvalue()'>ClickMe</button>
<script>
function htmlEc(sStr) {
var sText = sStr;
while (sText.indexOf("<") != -1 && sText.indexOf(">") != -1) {
sText = sText.replace("<", "&LT;");
sText = sText.replace(">", "&GT;");
/* wend */ }
return sText;
}

showvalue = function () {
	var val = htmlEc(txt.value);
	document.write(val);
};
</script>

danik.js 27.02.2014 18:10

Цитата:

Сообщение от alex33
Вот я придумал ещё вариант

Дык было уже. Только проще: http://javascript.ru/forum/misc/4540...tml#post299828

lamberdd 27.02.2014 19:07

Цитата:

Сообщение от danik.js (Сообщение 299843)
чё?

К примеру есть textarea с id='text', надо её отправить на сервер POST запросом.

danik.js 27.02.2014 19:17

Цитата:

Сообщение от lamberdd
К примеру есть textarea с id='text', надо её отправить на сервер POST запросом.

Не ее, а ее значение. То есть строку.
Только не говори что в инете нет информации как сделать POST запрос на сервер.

lamberdd 27.02.2014 19:32

Цитата:

Сообщение от danik.js (Сообщение 299874)
Не ее, а ее значение. То есть строку.
Только не говори что в инете нет информации как сделать POST запрос на сервер.

Да это я знаю, как отправить его вместе с тегами html, а то если там появляются какие-нибудь теги, то нечего не отправлется, да и на странице , куда я отправил будет не текст с этими символами.
А нужно чтобы на этой странице весь текст ,который я ввел в textarea передался точь в точь, т.е чтобы теги тоже отображались. Как то так.

danik.js 27.02.2014 19:47

код в студию

kostyanet 28.02.2014 11:45

Цитата:

Сообщение от lamberdd
который я ввел в textarea передался точь в точь, т.е чтобы теги тоже отображались. Как то так.

Засуньте его в тег <pre> и будет вам счастье. А вы думали как на форумах изображаются исходники хтмля в постах?

kostyanet 28.02.2014 11:51

Охренесть, оказывается этот форум натурально на js. А я думаю чего он тормозит сиськимасисески.

В общем отдельные теги тут конвертятся влет:

Цитата:

Засуньте его в тег &lt;pre&gt; и будет вам счастье. А вы думали как на форумах изображаются исходники хтмля в постах?
Куски не проверял, уже не интересно.

В php есть функция htmlspecialchars() или получше htmlentities, однако js не php и тут все гораздо проще, натырил:

// Encode/decode htmlentities
	function krEncodeEntities(s){
		return $j("<div/>").text(s).html();
	}
	function krDencodeEntities(s){
		return $j("<div/>").html(s).text();
	}

kostyanet 28.02.2014 11:54

Апупеть! Код в пять строк выше занимает в хтмле несколько экранов. ТС, этот код говорит что еще есть тег <code>

PS Интересно, а как оно тогда индексируется?

danik.js 28.02.2014 21:22

Цитата:

Сообщение от kostyanet
натырил

Хреновая идея. Потому что допустим если в html будут картинки то они начнут грузиться ))) Это первое что пришло в голову. Скорее всего есть и другие побочные эффекты. И вобще - по ресурсоемкости этот вариант в тыщу раз (если не больше) хуже варианта с replace, и в гораздо большей степени зависит от объема текста (верней числа тегов). Короче - в топку.
(речь про decode)


Часовой пояс GMT +3, время: 22:06.