基本的に、私のページには多数のフォームがあり、それらすべてに一度にアクセスして、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()
そして、同じ要素をシリアル化しようとすると、空の応答が返され、フォームで送信する必要があることを認識していないと思われますが、正確に定義する必要がある場所がわかりません。これがばかげた質問である場合は申し訳ありませんが、助けていただければ幸いです。