在javascript中比较来自两个不同来源的字符串

时间:2010-03-31 11:59:34

标签: javascript jquery

遗憾的是,这是一个特定的请求。

我有一个CMS,允许用户将文本输入到tinymce编辑器中,用于他们制作的各种帖子。编辑器通过ajax加载,允许从一个页面编辑多个帖子。如果点击取消,我希望能够检查是否对主文本进行了编辑。

目前我在ajax调用期间从数据库中获取文本的值,json_encode它,然后在回调期间将其存储在javascript变量中,以便稍后进行检查。当单击cancel时,使用jquery.val()获取隐藏文本区域的当前值(由tinymce用于存储提交的数据),并检查前一个ajax调用中存储的值,如下所示:

if(stored_value!=textarea.val())
{
    return true
}

即使没有进行任何更改,它也始终返回true。

问题似乎是textarea.val()使用html实体,而ajax jsoned版本则没有。

萤火虫中ajax的反应如下:

<p>some text<\/p>\r\n<p>some more text<\/p>

textarea源代码如下所示:

&lt;p&gt;some text&lt;/p&gt;
&lt;p&gt;some more text&lt;/p&gt;

这些明显不同,但在评估时如何才能将它们视为相同?

是否有一个函数可以比较字符串的最终输出或使用javascript将一个字符串转换为另一个字符串的方式?

我尝试在ajax页面中使用html实体,但这会在警告时返回带有完整html实体的字符串,我假设因为json_encoding它将它们变成了字符。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

使用prototype,您只需要在比较它之前转义Ajax响应:

ajaxResponse.escapeHTML();

我认为使用JQuery会有所不同。试试这个:

Escaping strings with Jquery

答案 1 :(得分:0)

我真的不相信这是jQuery的最佳方式,但它确实有效。

var test = "&lt;p&gt;some text&lt;/p&gt;";
var dummy = $("<p/>");
test = dummy.text(dummy.html(test));

alert(test);

答案 2 :(得分:0)

为什么不尝试不同的方法?

在提交表单之前,请尝试比较textarea.defaultValuetextarea.value。如果这些值相等,则用户没有改变任何内容。