Возврат каретки для текстового поля (textarea) - PullRequest
6 голосов
/ 16 августа 2011

У меня есть текстовое поле с атрибутом "wrap" = "hard" (на самом деле это текстовое поле на стороне сервера, но в режиме с несколькими текстами).

<asp:TextBox TextMode=MultiLine runat=server ID=txt Width=50 Height=50 class=txtclass />

<asp:Button runat=server ID=btnServer OnClick=btn_Click Width=80 Text="Click server" />

<input type="button" value="Click client" onclick="clientclick();" id="btnClient" style="width: 80px;" />

   protected void Page_Load(object sender, EventArgs e)
    {
        txt.Attributes.Add("wrap", "hard");
    }

Я ввожу текст шире, чем текстовое поле.Когда я нажимаю на кнопку на стороне клиента, текст в предупреждении без каретки (например, «111111111»).

<script src="jquery-1.5.2.min.js" type="text/javascript"></script> 

<script type="text/javascript">    

function clientclick() {
        alert($('.txtclass').val());          
    }

Когда я нажимаю кнопку сервера во время отладки, я вижу, что текстимеет возврат каретки (например, «11111 \ r \ n1111»).

protected void btn_Click(object sender, EventArgs args)
    {
        var test = txt.Text;
    }

Вопрос в том, как получить текст с возвратом каретки на стороне клиента?

Ответы [ 5 ]

4 голосов
/ 16 августа 2011

Есть несколько человек, которые задавали тот же вопрос, что и вы, и общее мнение состоит в том, что не существует простого, нестандартного решения. Исправление, по-видимому, состоит в том, чтобы обходить строку по одному слову за раз и добавлять символы новой строки, когда она будет переноситься.

В этом случае предоставляется пример JS - поиск "разрывов строк" в текстовой области, которая является переносом текста по-арабски

0 голосов
/ 29 ноября 2016

Возврат каретки \n\r все еще существует, он просто не интерпретируется (изменен в HTML).

Поэтому используйте элементы <br /> - на стороне клиента они будут интерпретироваться как HTML и будут отображать разрывы строк по желанию.

0 голосов
/ 26 марта 2015

Вот как это делается.

Читаемая версия:

S=escape(The_textarea.innerHTML);
S=S.replace(/%0D%0A/g,'<br>');
S=S.replace(/%0A/g,'<br>');
S=S.replace(/%0D/g,'<br>');
S=unescape(S);

Эффективная версия:

S=unescape(escape(The_textarea.innerHTML).replace(/%0D%0A/g,'<br>').replace(/%0A/g,'<br>').replace(/%0D/g,'<br>'));
0 голосов
/ 06 сентября 2013

Поскольку вы имеете дело с HTML, вы можете использовать тег
для принудительного переноса строки внутри текстового поля.Я боролся с этим некоторое время и наконец нашел это решение.У меня это отлично сработало.

0 голосов
/ 16 августа 2011
alert($('.txtclass').val().replace(/\r/g,"\r").replace(/\n/g,"\n"));

ты пробовал что-то подобное?

...