我试图比较两个相同的字符串:textarea
值(或textContent
或innerHTML
)和一个字符串作为属性存储在骨干模型,例如, "A string↵with line break"
。 而这个比较总是返回false
。
比较这些字符串的长度可以发现差异(存储的字符串长一个符号)。 问题是如何准备第一个字符串(从textarea
中提取)以使其完全等于第二个字符串(存储在模型中)。JS比较字符串与换行符
P.S.他们都是typeof === 'string'
。
P.P.S. 主要问题是如何使Backbone在设置属性时看到相等性:
this.model.set({ attr: textareaValue })
。
骨干网使用下划线的方法,只是在这种情况下,两个字符串比较:
return '' + a === '' + b;
我对两个字符串应用encodeURIComponent
:结果是Some%0Atext
VS Some%0D%0Atext
。所以第二个有\r
个字符(它是由Handlebars渲染的)。我应该在每个\n
之前插入这个字符吗?
P.P.P.S.是的,这是诀窍:textarea.value.replace(/\n/gm, '\r\n');
上'替换/ \ r \ n/g'所以你不要用'结束\ r \ r \ N'如果字符串确实有'\ r' –