2012-09-28 141 views
1

此代碼是一個簡單的函數調用作爲PARAM路徑:傳遞給JS功能

<input type="submit" name="_eventId_load" onclick="toLoad('2012\9\27\15\2012-09-27T15-05-59-512.00638.eml');" value="Load"/> 

這是我收到的js函數:

function toLoad(path) { 
    document.getElementById("emailPath").value = escapepath); 
} 

通過螢火蟲,我見該帕拉姆path包含:20129%17%0D%812-09-27T15-05-59-512.00638.eml

的值是:201292-09-27T15-05-59-512.00638.eml
而景觀功能後, 完全不同。我怎麼能起作用/編輯TE \之前我把它發送給js函數?

在此先感謝。

EDIT

這是解決方案:

<input id="filePath-${status.index}" type="hidden" value="${file.path}"/> 
<input type="submit" onclick="toLoad('${status.index}'" value="Load"/> 

這些輸入是一種形式的內部,每個元素是一個文件。我需要${status.index}來知道我要加載哪個文件。 ${file.path}包含我想要替換的路徑。

function toLoad(index) { 
    var emailPath = document.getElementById("filePath-" + index).value.replace(/\\/g,"\\\\"); 
    document.getElementById("emailPath").value = emailPath; 
} 

正確的輸入將被包含在一個div,這樣我就可以使用它的最終functionallity。

感謝您的回答!

+0

toLoad!= setAttachmentToLoad – Barmar

+0

這是我寫這個問題時的打字錯誤。在我的代碼中它有相同的名稱 –

回答

2

\是轉義字符,因此需要被複制以成爲一個字面\,即用\\替換所有\符號和重試。

Javascript - Replacing the escape character in a string literal

+0

謝謝。我還有問題,用這個我不能撥打電話: 我怎麼能做到嗎? –

+1

@Blanca:'因爲字符串被解釋.replace'不幫助這裏*之前*您進行更換。你從字面上把''\\''而不是''\''在你的代碼,即寫' '\\ 2012 \\ 9 27 ......''。 –

+0

我已更新我的問題與最終實施。 –

0

使用逃逸和UNESCAPE功能 的UNESCAPE()函數編碼的字符串進行解碼。 http://www.w3schools.com/jsref/jsref_unescape.asp

+0

這對我沒有幫助: unescape('2012 \ 9 \ 27 \ 15 \ 2012-09-27T15-05-59-512.00638.eml'):「20129 2-09-27T15-05-59-512.00638。 eml「 –

+1

哦,我明白了。你必須逃避系統\符號。使用 \\。我爲我的誤會道歉。 –