-1

パラメータをクエリ文字列としてページをリロードするjavascript関数を呼び出す選択ドロップダウンメニューを備えたフォームがあります。ページが置き換えられたときに同じドロップダウン オプションを選択したい。これを行うにはどうすればよいですか?

フォームを選択:

<select name="fill_position" id="fill_position" onchange="reloadShowForm()">

JS:

function reloadShowForm() { 
    var fill_pos = $('#fill_position').val();
    window.location.replace(window.location.href + "&fill_position=" + fill_pos);
}
4

3 に答える 3

1

1 つの解決策は、渡す URL からクエリ パラメータを読み取ることですwindow.location.href + "&fill_position=" + fill_pos。つまり、fill_position と window onload が結果を処理します。

function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
        vars[key] = value;
    });
    return vars;
}


var fillPosition = getUrlVars()["fill_position"];
if (fillPosition !== null) {
  $("#fill_position").val(fillPosition);
}
于 2013-09-04T18:05:41.893 に答える
1

最初に GET パラメータを解析する必要があります。

この投稿で提供されているradicandの関数は次のとおりです。

function getURLParameter(name) {
    return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null;
}

コードに追加してから、次のスニペットを使用します。

var fillPosition = getURLParameter("fill_position");
if (fillPosition !== null) {
  $("#fill_position").val( getURLParameter("fill_position") );
}
于 2013-09-04T18:05:58.097 に答える
0

私はComFreekの簡潔で有用な回答に賛成しますが、そうするのに十分な評判がありません. また、あなたの投稿に次の質問についてコメントしますが、やはり評判がありません。

質問: なぜページをリロードするのですか? jquery などを使用して ajax 呼び出しを実行し、選択した値を投稿して、結果の後続のコンテンツを動的に挿入する方が簡単ではないでしょうか?

意見: これにより、いくつかのトランジションを使用し、アドレス バーの URL をきれいに保ち、ユーザー エクスペリエンスを向上させることができます (たとえば、ページの読み込みの遅延や画面の更新がなくなります)。

于 2013-09-04T18:26:27.687 に答える