0

基本上我的页面上有许多表单,我希望能够一次访问它们并将它们添加到一个大型获取请求中。它在很大程度上可以工作,但是我在使用下拉菜单时遇到了一些麻烦,因为它们的标记与其他形式不同(至少在我见过的示例中)。由于我是前端开发的新手,请多多包涵,但这是我到目前为止所得到的:

    <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

0

所以,我想出了如何序列化它,但我认为这表明我的编码风格存在更深层次的问题,所以我在一段时间内不会接受这个,并且完全愿意接受其他答案。

当我给选择元素起一个名字时,一切都突然起作用了。以下是更新后的代码供参考:

 <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>
于 2013-07-11T14:43:29.180 回答