基本上我的页面上有很多表单,我希望能够一次访问它们并将它们添加到一个大的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()
当我尝试序列化相同的元素时,我得到一个空的响应,这让我觉得它在某种程度上没有意识到它应该在表单中提交,但是我有点不知道我应该在哪里定义它。对不起,如果这是一个愚蠢的问题,但任何帮助表示赞赏。
答案 0 :(得分:0)
所以,我想出了如何序列化这个,但我认为这表明我的编码风格存在更深层次的问题,因此我暂时不接受这一点,并且完全接受其他答案。
当我给select元素命名时,一切都突然起作用了。这里有参考的更新代码:
<form id="sorting" class="auto-submit" action="/search" method="get">
<select name="sort" id="sorting" class="parameter" action="/search" method="get">
% if previous.get("sort", "false") == "relevance":
<option selected="selected" value="relevance">Relevance</option>
<option value="alphabetical">Alphabetical</option>
% elif previous.get("sort", "false") == "alphabetical":
<option value="relevance">Relevance</option>
<option selected="selected" value="alphabetical">Alphabetical</option>
% else:
<option value="relevance">Relevance</option>
<option value="alphabetical">Alphabetical</option>
% endif
</select>
</form>