2012-02-22 51 views
0

我有一個列表框和一個特定的選定值,我想顯示一個下拉列表,並從下拉列表中選擇一個值,我想顯示另一個下拉列表。jquery change event without postback

我已經實現了這個使用jQuery的,但下拉菜單後才顯示回發。如何避免回傳?

這是我的jQuery代碼

<script type="text/javascript"> 
$(document).ready(function() { 
    if ($('#<%=under_list1.ClientID %> option:selected').val() == 0) { 
     $("#ddl_nature1").show(); 
     $("#ddl_gross1").hide(); 
     if ($('#<%=ddl_nature.ClientID %> option:selected').val() == 'I', $('#<%=ddl_nature.ClientID %> option:selected').val() == 'E') { 
      $("#ddl_gross1").show(); 

     } 
     else { 
      $("#ddl_gross1").hide(); 

     } 
    } 
    else { 
     $("#ddl_nature1").hide(); 
     $("#ddl_gross1").hide(); 
    } 
}); 

under_list1是我的列表框的ID,ddl_nature1是我的第一個下拉列表和ddl_gross1是我的第二個下拉。

+1

從您的代碼後面和從aspx頁面發佈代碼。您可以在下拉菜單中將AutoPostBack設置爲false。 – 2012-02-22 08:49:25

回答

1

您需要在下拉列表更改上添加相同的檢查。我在這裏將dropdownlist的改變放在一個通用函數中,並將其稱爲下拉列表更改,以及DOM準備好後的那些(女巫是post post後)。

$('#<%=ddl_nature.ClientID %>').change(function() { 
    ChangeViews(); 
}); 


$(document).ready(function() { 
    ChangeViews(); 
}); 

function ChangeViews() 
{ 
    if ($('#<%=under_list1.ClientID %> option:selected').val() == 0) { 
     $("#ddl_nature1").show(); 
     $("#ddl_gross1").hide(); 
     if ($('#<%=ddl_nature.ClientID %> option:selected').val() == 'I', $('#<%=ddl_nature.ClientID %> option:selected').val() == 'E') { 
      $("#ddl_gross1").show(); 
     } 
     else { 
      $("#ddl_gross1").hide(); 
     } 
    } 
    else { 
     $("#ddl_nature1").hide(); 
     $("#ddl_gross1").hide(); 
    } 
} 
+0

我仍然需要刷新頁面才能查看從列表框中選擇特定值的第二個下拉列表,並再次刷新頁面以查看從第二個下拉列表中選擇值的第三個下拉列表 – asifa 2012-02-22 09:45:15

+0

嘗試了很多後,我仍然我必須重複刷新頁面後,我從列表框中選擇的值,以獲得第二和第三下拉。 – asifa 2012-02-22 10:06:00

+0

@asifa我需要你的代碼的htlp部分來完全理解你的要求。在這裏,我明白你喜歡這樣做,而不回發。 – Aristos 2012-02-22 11:43:10

0

爲什麼不使用Ajax PageLoad函數。由於pageLoad函數將在每個PostBack之後被調用。

function pageLoad() 
    { 
     if ($('#<%=under_list1.ClientID %> option:selected').val() == 0) { 
      $("#ddl_nature1").show(); 
      $("#ddl_gross1").hide(); 
      if ($('#<%=ddl_nature.ClientID %> option:selected').val() == 'I', $('#<%=ddl_nature.ClientID %> option:selected').val() == 'E') { 
       $("#ddl_gross1").show(); 

      } 
      else { 
       $("#ddl_gross1").hide(); 

      } 
     } 
     else { 
      $("#ddl_nature1").hide(); 
      $("#ddl_gross1").hide(); 
     } 

} 
+0

我不想回發。如果我從列表框中選擇一個特定的值1,那麼應該顯示下拉菜單,並從下拉列表中選擇值1,我想顯示第三個下拉菜單。下拉菜單正常顯示,但只在頁面刷新 – asifa 2012-02-22 10:14:40

+0

我不想刷新或一次又一次地加載頁面以顯示相應的下拉菜單 – asifa 2012-02-22 10:15:08