2014-01-10 40 views
0

我有負載填充此字符串文本區域:比較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/)。

問候!

+1

你能提供複製您的問題的jsfiddle? –

+0

當然!給我兩秒鐘! – NLemay

+3

這確實會失敗,但爲什麼你需要它?換行符的顯示方式可能因瀏覽器等而異,因此最簡單的方法可能是在設置textarea後立即獲取textareas值,然後再次將其與textareas值進行比較,這樣它們肯定是相同的,除非用戶鍵入一些東西。 – adeneo

回答

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

}); 

FIDDLE

+0

最優雅的跨瀏覽器示例。希望我可以再次升級。 – maccettura

0

AFAIK文本區域值換行符只是換行符'\ n'。

我不會逐行比較。您始終可以使用String.replace()替換'\ n \ r'。實際上,規範化行結束也將擺脫可能的跨瀏覽器問題。

+0

是的!它似乎工作!但是你確定它會在每個瀏覽器中都有效嗎? val()總是隻返回\ n? – NLemay

+1

不是。我知道它適用於Chrome,Firefox和較新的Internet Explorers。但是,更多的礦物只有三種可能性:'\ n'(Unix風格),'\ n \ r'(Windows風格)或'\ n'(MacIntosh風格)。所以如果你規範化行尾以便它們總是被'\ n'取代,你應該沒問題。 –

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)," "); 

這應該做的伎倆。在兩個值上使用上述代碼示例後,您可以比較文本區域值和初始值。