如何在回邮后检查表单

本文关键字:检查 检查表 表单 | 更新日期: 2023-09-27 18:21:23

请对此场景进行联合排序:

我有一张有3个下拉列表的表格。我将这些控件放在update panel中。当我的用户在第一个下拉列表中选择值大于2的项目时,我会使用jQuery禁用第二个和第三个下拉列表。我的问题是,在任何帖子返回后,所有下拉列表都被启用。我知道这很正常,但我如何再次检查表单并禁用应该禁用的控件?

谢谢

编辑1)

这是我的代码:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <table border="1" cellpadding="0" cellspacing="0">
                <tr>
                    <td>
                        <asp:DropDownList ID="DropDownList1" runat="server" Width="100px">
                            <asp:ListItem Value="1" Text="1" />
                            <asp:ListItem Value="2" Text="2" />
                            <asp:ListItem Value="3" Text="3" />
                        </asp:DropDownList>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:DropDownList ID="DropDownList2" runat="server" Width="100px">
                            <asp:ListItem Value="1" Text="1" />
                            <asp:ListItem Value="2" Text="2" />
                            <asp:ListItem Value="3" Text="3" />
                        </asp:DropDownList>
                    </td>
                </tr>
                <tr>
                    <td>
                        <asp:DropDownList ID="DropDownList3" runat="server" Width="100px">
                            <asp:ListItem Value="1" Text="1" />
                            <asp:ListItem Value="2" Text="2" />
                            <asp:ListItem Value="3" Text="3" />
                        </asp:DropDownList>
                        <br />
                    </td>
                </tr>
            </table>
            <div>
                <asp:Button ID="Button1" runat="server" Text="Cause Post Back" Width="200px" 
                    onclick="Button1_Click"/>
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>

和javascript:

 $(document).ready(function () {
        function Disable(item) {
            item.attr('disabled', 'disabled');
        }
        $('#DropDownList1').change(function () {
            if ($(this).val() > 2) {
                Disable($('#DropDownList2'));
                Disable($('#DropDownList3'));
            }
            else {
                Enable($('#DropDownList2'));
                Enable($('#DropDownList3'));
            }
        }).change();
        function Enable(item) {
            item.removeAttr('disabled');
        }
    });

如何在回邮后检查表单

我遗漏了什么吗?

$('#dropdown1').change(function()
{
    if ( $(this).val() > 2 )
    {
        $('#dropdown2, #dropdown3').prop('disabled', true);
    }
    else
    {
        $('#dropdown2, #dropdown3').prop('disabled', false);
    }
})
.change();

问题是由updatepanel引起的,因为它部分地张贴在您的页面上。请将Jquery放入函数pageLoad()

  function pageLoad() { 
    // Put your code here... 
  } 

希望它能解决你的问题。

尝试这个

  AutoPostBack="true"

作为

 <asp:DropDownList ID="DropDownList1" runat="server" Width="100px" 
       AutoPostBack="true">
                            <asp:ListItem Value="1" Text="1" />
                            <asp:ListItem Value="2" Text="2" />
                            <asp:ListItem Value="3" Text="3" />
                        </asp:DropDownList>

添加一个隐藏字段,用于存储下拉列表的状态。。例如0=禁用,1=启用。。。禁用下拉菜单时,将隐藏字段的值设置为0。启用时,将其设置为1。然后,在发布和重新加载表单时,读取隐藏字段的值,并相应地启用/禁用下拉列表。

$(function(){
   if($("#hiddenFieldID").val()=="0")
       //disable
   else
      //enable          
});