Строки Javascript не сравниваются, экранирующие символы не экранируются при использовании функции jQuery.val () - PullRequest
1 голос
/ 24 января 2010

у меня есть:

<input type="text" value="Raphaël\nkicks\nbutt!" id="tzbox_txt">

var inputText = $("#tzbox_txt").val(); 
var stringText = "Raphaël\nkicks\nbutt!"
inputText === stringText - false!

Если я использую $(input).val(), я получаю "Raphaël\nkicks\nbutt!", где \n не интерпретируется как разрыв строки. И если я сделаю var text = "Raphaël\nkicks\nbutt!", он будет экранирован, и текст будет отображаться с переносами строк.

Как сделать, чтобы вводимое текстовое значение интерпретировалось с переносами строк?

Ответы [ 3 ]

2 голосов
/ 24 января 2010

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

Редактировать: , если вы хотите обработать последовательность \ n как новую строку, выполните поиск и замените:

var s = "this\\nis\\na\\ntest";
var unescaped = s.replace("\\n", "\n");

В строке есть литерал с обратной косой чертой, за которым следует n. Этот поиск и замена заменяет литерал "\ n" новой строкой.

1 голос
/ 24 января 2010

Элемент input[type=text] не может содержать разрывы строк, потому что ввод text принимает только одну строку текста. То, что вы видите как escape-последовательности новой строки, интерпретируется как простой текст.

Если вы хотите сопоставить его, измените соответствующий код на этот, потому что это именно то, что возвращается из функции val():

var stringText = "Raphaël\\nkicks\\nbutt!";

Если вы хотите сопоставить его с другой стороны, и ваши элементы input содержат текстовую последовательность из '\n', вы можете выполнить замену текстового значения перед проверкой:

var inputText = $("#tzbox_txt").val().replace(/\\n/g,"\n");
var stringText = "Raphaël\nkicks\nbutt!";
inputText === stringText; // true
0 голосов
/ 24 января 2010

Я думаю, что существенная проблема здесь в том, что во входном текстовом поле \ n интерпретируется как обратный слеш и буква n, тогда как в операторе var \ n преобразуется в фактический разрыв строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...