没有回发的jquery更改事件

时间:2012-02-22 08:43:28

标签: jquery asp.net

我有一个列表框,在特定的选定值上,我想显示一个下拉列表,并从下拉列表中选择一个值,我想显示另一个下拉列表。

我使用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是我的第二个下拉列表。

2 个答案:

答案 0 :(得分:1)

您需要在下拉列表更改中添加相同的检查。我在这里将下拉列表的更改放在一个常用函数上,并将其称为下拉列表更改,以及DOM准备好时(后面的帖子后面)。

$('#<%=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();
    }
}

答案 1 :(得分:0)

为什么不使用Ajax PageLoad函数。因为每个PostBack后都会调用pageLoad函数。

   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();
        }

}