Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 比较textarea值和字符串?_Jquery_Compare_Textarea - Fatal编程技术网

Jquery 比较textarea值和字符串?

Jquery 比较textarea值和字符串?,jquery,compare,textarea,Jquery,Compare,Textarea,我有一个文本区域,在加载时使用以下字符串填充: //Example of use\r\n//var result = row['col'] + 10;\r\n//return result; 然后,当用户完成后,我想得到textarea的值,并将其与初始值进行比较。但此行始终返回false(initialString是上面的值): 我很确定问题出在“\r\n”上,因为val()改变了它。但是你看到一个简单的跨浏览器的方法来比较这些字符串吗?或者我应该每行拆分和循环行吗 如您所见,这里是一个JS

我有一个文本区域,在加载时使用以下字符串填充:

//Example of use\r\n//var result = row['col'] + 10;\r\n//return result;
然后,当用户完成后,我想得到textarea的值,并将其与初始值进行比较。但此行始终返回false(initialString是上面的值):

我很确定问题出在“\r\n”上,因为val()改变了它。但是你看到一个简单的跨浏览器的方法来比较这些字符串吗?或者我应该每行拆分和循环行吗

如您所见,这里是一个JSFIDLE,警报总是返回false()


问候

AFAIK文本区域值换行符只是换行符“\n”


我不会逐行比较。始终可以使用String.replace()替换“\n\r”。实际上,规范化行尾也可以避免可能的跨浏览器问题。

您可以在文本区域和初始值中的值中用空格替换
\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)," ");

这应该能奏效。在对两个值使用上述代码示例后,您可以比较文本区域值和初始值。

从文本区域预格式化中获取值,然后您可以再次将其与文本区域值进行比较,并确保其相同,除非用户对其进行了更改

$(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);

});

您能提供一个JSFIDLE复制您的问题吗?当然!给我两秒钟!这确实会失败,但你为什么需要它呢?换行符的呈现方式可能因浏览器等而异。因此最简单的方法可能是在设置后立即获取textareas值,然后再将其与textareas值进行比较,这样一来,除非用户键入内容,否则它们肯定是相同的。@adeneo先生,有个好主意@我可以肯定阿德内奥之路就是要走的路!它似乎起作用了!但是你确定它在所有浏览器中都能工作吗?val()将始终仅返回\n?不完全返回。我知道它适用于Chrome、Firefox和更新的Internet Explorer。但是有更多或更少的可能性只有三种:'\n'(Unix风格)、'\n\r'(Windows风格)或只是'\n'(MacIntosh风格)。因此,如果您规范化行的结尾,使其始终被“\n”替换,则应该可以。最优雅的跨浏览器示例。但愿我能再次投票。
$(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);

});