0

目前我有一个包含所有选项的下拉框。按下提交后,页面将重新加载 url 中所有选定的变量

http://127.0.0.1:8000/website/?var1=choice1&var2=choice3

因此重新加载相同的视图,并通过视图收集和分析变量。根据选择,将数据库中的不同数据发送到此网页页面,从而在此下拉菜单下加载不同的表。

刷新后是否可以在表单中显示所选数据?像这样的东西: 我目前的网站

到目前为止,我只使用了 HTML。我认为也许使用 jQuery 我可以让它工作,但是语言令人困惑(尽管我非常愿意学习,如果有人知道如何用 jQuery 来做的话)

解决方案

在 Chris 的指示下,我设法让它发挥作用。首先,Chris 的解决方案不适用的是 request.GET 方法。因此,在调用的 VIEW 内部return render_to_response('website.html')(所以是相应的视图),我添加了以下代码:

requestDict = request.GET

return render_to_response('optionset.html', {'request':requestDict}) 

因此,在我的模板中,我执行了以下操作:

<form action="" name="OptionSetForm">
     <select name="var1" size=2>
     <OPTGROUP LABEL="FirstPickHere">
            <option {% if request.var1 == "Choice1" %} selected="selected"{% endif %}>Choice1</option>
            <option {% if request.var1 == "Choice2" %} selected="selected"{% endif %}>Choice2</option>
            <option {% if request.var1 == "Choice3" %} selected="selected"{% endif %}>Choice3</option>
    </OPTGROUP>
    </select>
</form>

确保在==和 两个变量之间有空格。

4

2 回答 2

1

您可以使用 jQuery 解析查询字符串中的变量(这里有一个库),然后按照此处所述填充多选字段。

于 2012-08-10T21:14:04.900 回答
1

由于您使用的是选择框,因此您需要在每个选项中添加以下内容:

<option value="choice1"{% if request.GET.var1 == "choice1" %} selected="selected"{% endif %}>Choice 1</option>

或者,如果您更愿意使用 jQuery:

var queryString = window.location.search.substring(1);
var params = queryString.split('&');
for (var i=0; i<params.length; i++) {
    var param = params[i].split('=');
    $('[name='+param[0]+']').val(param[1])
}
于 2012-08-10T21:15:05.193 回答