使用javascript将url参数传递给隐藏字段

时间:2012-11-15 15:57:57

标签: javascript url parameters field hidden

我需要以下代码的帮助。

我需要做的是将URL参数传递给这两个隐藏字段。  http://www.yoursite.com/index.php?fieldOne=Work&fieldTwo=Play

它似乎不起作用。另外,我无法在表单字段中添加id。

<input type="hidden" name="fieldOne">
    <input type="hidden" name="fieldTwo">
    <script>
    function FillForm() {
        var FormName = "myformname";
        var qLoc = location.href.indexOf('?');
    if(qLoc < 0) { return; }
    var q = location.href.substr(qLoc + 1);
    var list = q.split('&');
    for(var i = 0; i < list.length; i++) {
        var kv = list[i].split('=');
        if(! eval('document.'+FormName+'.'+kv[0])) { continue; }
        kv[1] = unescape(kv[1]);
        if(kv[1].indexOf('"') > -1) {
            var re = /"/g;
            kv[1] = kv[1].replace(re,'\\"');
        }
      eval('document.'+FormName+'.'+kv[0]+'.value="'+kv[1]+'"');
      }
     }
    FillForm();
    </script>` 

2 个答案:

答案 0 :(得分:0)

您可以简化代码:

var formName = "myformname",
    query = location.href.split("?").pop().split("&"),
    i = 0,
    len = query.length,
    split, elem;

for ( ; i < len; i++ ) {
    split = query.split("=");
    elem = document[formName][split[0]];

    if ( elem ) {
        elem.value = split[1].replace(/"/g, '\\"');
    }
}

答案 1 :(得分:0)

NULL有一点简化(在代码中有关于查询迭代的代码中有一个小错误)。这是NULL的简化更正,也是我猜测为什么你没有得到理想的结果:

<form name="myformname">
<input type="hidden" name="fieldOne">
<input type="hidden" name="fieldTwo">
</form>
<script type="text/javascript">

  var formName = "myformname",
  query = location.href.split("?").pop().split("&"),
  i = 0,
  len = query.length,
  split, elem;

  for ( ; i < len; i++ ) {
      split = query[i].split("=");

      //alert(split);

      elem = document[formName][split[0]];

      if ( elem ) {
          elem.value = split[1].replace(/"/g, '\\"');
      }
  }
</script>

1)确保您使用带有ID的form标记。我看不到您的HTML。

2)请确保您没有看到隐藏的<input>中出现新数据?我建议使用调试器并检查实时DOM树而不是源代码。有些调试器不会实时更新源代码。

编辑:

根据来自提问方的新信息,这是另一个修复方法:

<script type="text/javascript">

$(document).ready(function(){

    var formName = "dSOfferAllE10Test-1349977611926";

    var query = location.href.split("?").pop().split("&");
    var len = query.length;
    var split, elem;

    for (var i = 0; i < len; i++ ) {

        split = query[i].split("=");

        $('form[name="'+formName+'"]').find('input[name="'+split[0]+'"]').each(function(){

          $(this).val(split[1].replace(/"/g, '\\"'));

        });
    }
});

</script>​​​​​​​​​​​​​​​​​​​​​​​​​​​​

这使用jQuery,因此如果您无法访问{{1},请确保在<head>中附加对jQuery的引用(或至少在<body>的顶部附近最好从Google托管的版本中获取代码段:https://developers.google.com/speed/libraries/devguide#jquery