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

しかし、これにより Out of Memory エラー プロンプトが表示されます。ユーザーがデフォルトのテキスト以外のドロップダウンで何かを選択した場合、サーバー側のスクリプトに進み、それ以外の場合は現在のページにとどまるように、JS 検証をどのように使用すればよいですか?

4

1 に答える 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 に答える