Django Dropdown Auto提交

时间:2009-09-20 22:41:32

标签: javascript ajax django

嘿伙计们。我有一个表格,包含所有公司的下拉菜单。现在,当用户更改公司下拉框中的值而不点击表单上的提交按钮时,我想显示为该公司工作的所有人员。有人有一个很好的例子吗?

TKS

2 个答案:

答案 0 :(得分:8)

不一定需要Ajax,因为你只需提交表单,无论你是唱Django还是其他服务器端选择都没有区别,只需使用像......这样的东西:

<form name=companiesForm action="whateverurl" method=POST>
  <p>
  <select name=companySelect size=1 onChange="companiesForm.submit();">
    <option value="" SELECTED>Choose A Company
    <option value="1">One Company
    <option value="2">Another Company
    <option value="3">A Third Company
  </select>
  </p>
</form>

答案 1 :(得分:3)

亚历克斯的回答是一条很好的路,但这里有另一种选择。 Django和slugs相处得很好。而且,带有jquery的不引人注目的javascript目前很流行。

您可以直接导航到构造良好的URL,而不是POST一个值。这样做的另一个好处是可以让页面更加友好,让人们为页面添加书签,并且当有人点击后退按钮时,也避免了关于POST信息的愚蠢错误。

请注意,在Alex或我的代码中,如果在客户端浏览器上禁用了javascript,导航将会中断。提供一些页脚链接到这个组合框在页面某处(底部可能)的位置是个好主意。

(未经测试,可能需要稍微调整一下)

<!-- you'll need jquery to make this work -->
<script type="text/javascript">
     $(function() {
          // navigate to page on click event
          $('#nav_combo').bind('change', function() { goToPage(); } );
     });

     function goToPage() {
      var baseUrl = '/your/base/url/';
      window.location.href = baseUrl + $('nav_combo').val()
     }
</script>

...

<form>
     <select id="nav_combo">
          <option value="page-1-slug">Page 1</option>
          <option value="page-2-slug">Page 2</option>
     </select>
</form>

编辑 - 顺便说一下,我应该提到你可以轻松使用上面插入django object_detail generic view的代码。