我有一个textarea,我在加载时用这个字符串填充:
//Example of use\r\n//var result = row['col'] + 10;\r\n//return result;
然后,当用户完成后,我想获得textarea的值并将其与初始值进行比较。但是这一行总是返回false(initialString是上面的值):
if($("#textarea").val() == initialString) { ... }
我很确定问题出在'\ r \ n'上,因为val()会改变它。但是你看到一种简单的跨浏览器方式来比较这些字符串吗?或者我应该每行拆分和循环线?
这里有一个jsFiddle,如您所见,警报始终返回false(http://jsfiddle.net/MCYbh/)。
问候!
答案 0 :(得分:2)
从预先格式化的textarea中获取值,稍后您可以再次将其与textareas值进行比较,并确保它是相同的,除非用户更改它。
$(document).ready(function() {
var initValue = "//Example of use\r\n//var result = row['col'] + 10;\r\n//return result;";
$("#textarea").val(initValue);
initValue = $("#textarea").val();
alert($("#textarea").val() == initValue);
});
答案 1 :(得分:0)
AFAIK文本区域值换行符只是换行符'\ n'。
我不会逐行进行比较。您始终可以使用 String.replace()替换'\ n \ r'。实际上,规范化行尾也可以摆脱可能的跨浏览器问题。
答案 2 :(得分:0)
您可以在文本区域的值和初始值中用空格替换\r\n
个字符,然后进行比较。要用空格替换\r\n
个字符,可以使用以下正则表达式:
var str = "My string \r\n with new line \r\n characters";
str = str.replace(new RegExp(/\r?\n|\r/g)," ");
这应该可以解决问题。在两个值上使用上面的代码示例后,您可以比较文本区域值和初始值。