您可以使用javascript解析查詢字符串。查詢字符串存儲在location.search
對象內,還包含?
。
首先,捕捉查詢字符串的東西,你可以工作:
var queryString = location.search.substr(1); // substr(1) will cut off the ? character
然後實際的字符串解析爲一個對象:
function parseQuery(str) {
var result = {}; // going to store the key-value (kvp) pairs in here
var pairs = str.split('&'); // break it up by the standard ampersand delimiter
for (var i = 0; i < pairs.length; i++) { // go through each of the pairs
var kvp = pairs[i].split('='); // parse the individual pair using = as the delimiter
result[kvp[0]] = kvp[1]; // kvp[0] contains the name of the field, kvp[1] contains the value
}
return result;
}
var parsedQueryString = parseQuery(queryString);
而現在填充表單輸入元素:
document.getElementById('to').value = parsedQueryString.to||'';
詳細說明前一行,parsedQueryString
現在是o (從上面的函數返回result
)。輸入字段名爲to
,它對應於查詢字符串中的鍵。我們可以通過parsedQueryString.to
訪問它,但是,如果它沒有包含在查詢字符串中,我們希望它通過默認分配空字符串''
:parsedQueryString.to || ''
而優雅地失敗(使用或運算符||
)。
這裏是一個工作示例:
<!doctype html>
<html>
<head>
<title>JS Form</title>
</head>
<body>
<form method="get">
<p><input type="text" size="25" id="to" name="to" /></p>
<p><input type="submit" value="Submit" id="scheduleSubmit" name="scheduleSubmit" /></p>
</form>
<script type="text/javascript">
function parseQuery(str) {
var result = {};
var pairs = str.split('&');
for (var i = 0; i < pairs.length; i++) {
var kvp = pairs[i].split('=');
result[kvp[0]] = kvp[1];
}
return result;
}
var queryString = location.search.substr(1);
var parsedQueryString = parseQuery(queryString);
document.getElementById('to').value = parsedQueryString.to||'';
</script>
</body>
</html>
注意,無法在form
元素的action
屬性只會讓瀏覽器「後」 /「獲取」的數據到當前頁面。
你能更好地解釋「輸入的字段仍然在文本框內綁定」嗎? – Sergio
當按鈕被點擊並重定向時,字段變空,但我想要顯示先前輸入的文本 –