2

我需要以下代码的帮助。

我需要做的是将 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>` 
4

2 回答 2

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, '\\"');
    }
}
于 2012-11-15T16:05:44.027 回答
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) 确保您使用的是form带有 id 的标签。我看不到你的 HTML。

2) 确保您没有看到新数据出现在 hidden 中<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,因此请确保在您的<head>(或至少在顶部附近,<body>如果您无权访问. )中附加对 jQuery 的引用<head>。最好从 Google 托管的版本中获取片段:https:/ /developers.google.com/speed/libraries/devguide#jquery

于 2012-11-15T16:24:27.303 回答