2009-09-20 99 views
3

嘿傢伙。我爲所有公司提供了一個下拉式表單。現在,當用戶更改公司下拉框中的值而不觸碰表單上的提交按鈕時,我想顯示所有爲該公司工作的人員。任何人都有一個很好的例子嗎?Django Dropdown Auto提交

TKS

+1

這是關於ajax/javascript比django更多。我建議你閱讀關於ajax的教程。 – Fragsworth 2009-09-20 22:44:23

+0

@Fragsworth是真的,它不一定是django。但它也不需要JavaScript或Ajax。 – 2009-09-21 02:20:29

回答

3

亞歷克斯的答案是一條很好的路線,但這裏有一個選擇。 Django和slu go相處得很好。和jquery的不顯眼的JavaScript現在是髖關節。

而不是發佈一個值,你可以簡單地導航到一個構造良好的URL。這還有一個好處,就是讓頁面更加容易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的代碼。

+0

有趣的概念,+1 – 2009-09-21 02:18:04

8

沒有阿賈克斯一定需要,因爲你可以提交表單,並且無論你唱的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>