2012-02-22 92 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