![](/img/trans.png)
[英]Javascript Twice enter in textarea not detected by (/[\n\r]/gm)
[英]ENTER converted from \n to \r\n on POST
我將這個簡單的測試頁保存為page1.html。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<script type="text/javascript">
function submitForm() {
alert(escape(document.myform.mytextarea.value));
return true;
}
</script>
</head>
<body>
<form name="myform" action="page2.html" method="post" onsubmit="javascript:return submitForm();">
<textarea name="mytextarea">xxxyyy</textarea>
<input type="submit" value="submitForm">
</form>
</body>
</html>
此頁面保存為page2.html。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<body>
Page2.html
</body>
</html>
我在Firefox下打開page1.html(我認為版本沒有重要性,但它是18.0。與Chrome或IE 10.0相同的問題)。 在我單擊submitForm按鈕之前,我在值“xxx”和“yyy”之間按下了一個ENTER。
當我單擊submitForm按鈕時,警報顯示“xxx”和“yyy”之間的一個字符,即\\ n編碼為“%0A”。
如果我查看發布的Firebug,我可以看到兩個字符“\\ r \\ n”編碼為“%0D%0A”。
你能解釋為什么\\ n在POST上轉換為\\ r \\ n以及如何防止這種情況? 我最小化了我的問題,但這對我來說真的很麻煩。
我可以在Safari OS上測試這個,我也在POST上獲得%0D%0A。
在IE 8.0之前和之前,Javascript警告%0D%0A並且我在POST上獲得%0D%0A,因此IE 8.0及之前的行為不同。
感謝您的信息,我寫了這個函數來計算我的textarea在任何瀏覽器上的“提交”長度:
function getFormURLEncodedLength(myValue) {
return myValue.replace(/(\r\n|\n|\r)/g, '\r\n').length;
}
在c#中:
string value = Request.Params["txtValue"].replace("\r\n","\n");
或者您可以添加隱藏字段,如:
<input id="txtValue" type="textarea" />
<input id="hiddenTxtValue" type="hidden"/>
並使用encodeUriComponent
設置其值:
$('#hiddenTxtValue').val(encodeUriComponent($('#txtValue').val()));
在c#中:
string value = Request.Params["hiddenTxtValue"];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.