基本上我的页面上有许多表单,我希望能够一次访问它们并将它们添加到一个大型获取请求中。它在很大程度上可以工作,但是我在使用下拉菜单时遇到了一些麻烦,因为它们的标记与其他形式不同(至少在我见过的示例中)。由于我是前端开发的新手,请多多包涵,但这是我到目前为止所得到的:
<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()
当我尝试序列化同一个元素时,我得到一个空响应,这让我觉得它没有意识到它应该以表单形式提交,但我有点不知所措我应该在哪里定义它。对不起,如果这是一个愚蠢的问题,但任何帮助表示赞赏。