Javascript字符串不进行比较,使用jQuery.val()函数转义未转义的字符

时间:2010-01-24 07:54:57

标签: javascript jquery string comparison

我有:

<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 个答案:

答案 0 :(得分:2)

如果您想要多行文字输入,您应该使用textareas而不是输入文本框。文本框只有一行文字,因此没有换行符。

修改:如果您想将序列视为新行,请执行搜索和替换:

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

字符串中包含的是反斜杠文字,后跟n。此搜索和替换使用换行符替换文字“\ n”。

答案 1 :(得分:1)

input[type=text]元素不能包含换行符,因为text输入只接受一行文本。您认为换行转义序列被解释为纯文本。

如果您想匹配它,请将匹配代码更改为此,因为这正是从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

答案 2 :(得分:0)

我认为这里的基本问题是,在输入文本框中,\ n被解释为反斜杠和字母n,而在var语句中,\ n正被转换为实际的换行符。