我試圖比較兩個相同的字符串: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' –