2

以下のコードについて助けが必要です。

ここで行う必要があるのは、URL パラメーターをこれら 2 つの非表示フィールドに渡すことです。 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>

form1) 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 を使用するため、jQuery への参照を に添付してください(またはにアクセスできない場合は<head>、少なくとも. /developers.google.com/speed/libraries/devguide#jquery<body><head>

于 2012-11-15T16:24:27.303 に答える