0

基本的に、私のページには多数のフォームがあり、それらすべてに一度にアクセスして、1 つの大きな get 要求に追加できるようにしたいと考えています。大部分は機能していますが、ドロップダウン メニューのマークアップが他のフォームとは異なるため (少なくとも私が見た例では)、ドロップ ダウン メニューで機能させるのに苦労しています。私はフロントエンド開発に慣れていないので、ご容赦ください。

    <form id="sorting" class="auto-submit" action="/search" method="get">
        <select id="sorting" class="parameter" action="/search" method="get">
            % if previous.get("sorting", "false") == "relevance":
                <option selected="selected" name="sort" value="relevance">Relevance</option>
                <option name="sort" value="alphabetical">Alphabetical</option>
            % elif previous.get("sorting", "false") == "alphabetical":
                <option name="sort" value="relevance">Relevance</option>
                <option name="sort" selected="selected" value="alphabetical">Alphabetical</option>
            % else:
                <option name="sort" value="relevance">Relevance</option>
                <option name="sort" value="alphabetical">Alphabetical</option>
            % endif
        </select>
    </form>

これらの値にアクセスするために現在使用しているスクリプト(他の場所から起動されましたが、それが問題だとは思いません):

function submitForms(retain_page) {
    var get_data = [];
    var form_list = $(".auto-submit .parameter");
    for (var i in form_list){
        get_data.push.apply(get_data, form_list.eq(i).serializeArray());
    }
    var url = document.URL.split("?")[0]+"?";
    for (var o in get_data){
        if (retain_page === false){
            if (get_data[o].name == "page"){
                get_data[o].value = 1;
            }
        }
        url = url + (get_data[o].name + "=" +get_data[o].value + "&");
    }
    document.location.href = url.substring(0, url.length-1);
}

問題は要素へのアクセス方法にあると確信しており、javascript コンソールでは、次のコマンドを実行して探していたものを取得できました。

$(".auto-submit .parameter").eq(4).val()

そして、同じ要素をシリアル化しようとすると、空の応答が返され、フォームで送信する必要があることを認識していないと思われますが、正確に定義する必要がある場所がわかりません。これがばかげた質問である場合は申し訳ありませんが、助けていただければ幸いです。

4

1 に答える 1