【问题标题】:Django Dropdown Auto submitDjango Dropdown 自动提交
【发布时间】:2010-11-29 22:44:49
【问题描述】:

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

tks

【问题讨论】:

  • 这更多是关于 ajax/javascript 而不是 django。我建议您阅读有关 ajax 的教程。
  • @Fragsworth 是的,这不一定与 django 有关。但它也确实不需要 javascript 或 ajax。

标签: javascript ajax django


【解决方案1】:

Alex 的回答是一个不错的选择,但这里有一个替代方案。 Django 和蛞蝓配合得很好。目前,带有 jquery 的不显眼的 javascript 很流行。

您可以简单地导航到结构良好的 URL,而不是 POST 值。这样做还有一个额外的好处,那就是使页面对 SEO 更加友好,让人们可以为页面添加书签,并且还可以避免在有人单击后退按钮时出现关于 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 的代码。

【讨论】:

    【解决方案2】:

    不一定需要 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>
    

    【讨论】:

      猜你喜欢
      • 2011-06-29
      • 2015-06-09
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 2015-07-24
      • 2019-03-08
      • 1970-01-01
      • 2017-07-22
      相关资源
      最近更新 更多