0

我正在尝试验证下拉列表的当前值,并检查它是否在单击按钮时选择了其中一个选项。如果没有,我的目标是出现一个 JS 提示,要求用户选择一些东西。我的下拉代码如下所示:

        <asp:DropDownList ID="TBDrop" runat="server" AppendDataBoundItems="true" DataValueField="id" Width="155px">
        <asp:ListItem Text="---Select---" Value="0" />
        <asp:ListItem Text="YES" Value="1" />   
        <asp:ListItem Text="NO" Value="2" />   

        </asp:DropDownList>

我的js脚本是:

        function validate_dropdown1() {
            var dropdown = document.getElementById('ctl00_ContentMasterID_TBDrop');
            if (dropdown.selectedIndex == 0) {
                alert("Please select from list");
                return false;
            } else {
                document.getElementById('ctl00_ContentMasterID_tagComplete').onclick("tagComplete_Click");
                return true;
            }
        }

我的按钮是这样的:

  <asp:Button ID="tagComplete" runat="server" Height="23px" OnClick="tagComplete_Click"  Text="Complete" OnClientClick="validate_dropdown1();" />

我的问题是,在没有选择的情况下,会出现 js 提示,但仍然会在我不打算这样做的 onclick 标记事件 (OnClick="tagComplete_Click") 上进行。我已经尝试过,如您在上面看到的那样使用

            } else {
                document.getElementById('ctl00_ContentMasterID_tagComplete').onclick("tagComplete_Click");
                return true;
            }

但这会导致内存不足错误提示。我应该如何使用 JS 验证,以便如果用户在下拉菜单中选择默认文本之外的内容,它将在服务器端脚本上继续,否则保持在当前页面上

4

1 回答 1

1

对按钮声明的一个小改动。

OnClientClick="return validate_dropdown1();"

<asp:Button ID="tagComplete" runat="server" Height="23px" OnClick="tagComplete_Click"  Text="Complete" OnClientClick="return validate_dropdown1();" />

如果 validate_dropdown1() 返回 false 则不会引发事件并且服务器不会回发。

于 2013-11-14T14:41:44.357 回答