使用查询字符串更改表单值

时间:2017-02-26 23:24:28

标签: javascript url-encoding

我有一个销售渠道,我要求通过Google API提供地址,它会返回与此类似的查询字符串:

 123+Yonge+Street%2C+Toronto%2C+ON%2C+Canada

我找到了一个我用来抓取查询字符串的函数:

function getParameterByName(name, url) {
if (!url) {
  url = window.location.href;
}
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
    results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}

然后我开始显示格式正确的查询字符串(没有特殊字符)我想在ID为address_name的页面上的Div,但是当我尝试将相同的地址添加到具有相同的输入字段时变量导致输入文本为123 + Yonge + Street + Toronto + ON + Canada。

var address = getParameterByName('address');
document.getElementById("address_name").innerHTML=address;
document.getElementById("formaddress").value = address;

虽然当我尝试将其放入输入字段时插入到DIV中它完美地工作,但空格被替换为“+”。是否存在某种特殊格式或规则我使用输入表单而不是Div?

2 个答案:

答案 0 :(得分:0)

您的代码与此工作示例有何不同?

function getParameterByName(name, url) {
if (!url) {
  url = window.location.href;
}
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
    results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}

var address = getParameterByName('address', '?address=123+Yonge+Street%2C+Toronto%2C+ON%2C+Canada');
document.getElementById("address_name").innerHTML=address;
document.getElementById("formaddress").value = address;
<div id="address_name"></div>
<input id="formaddress" type="text">

答案 1 :(得分:0)

代码是正确的,输入字段被隐藏而不是文本字段存在问题。