首页 文章

按钮单击后禁用asp.net检测DropDownList.SelectedIndexChanged(JS禁用)

提问于
浏览
0

我有一个DropDownList连接到TextBox . 触发事件SelectedIndexChanged时,文本框中的文本会更改 . 文本框的内容也可以通过用户输入进行更改 . 在页面的末尾,用户必须提交数据(按钮) . 启用javascript时一切正常,但我也有禁用javascript的用户 . 如果没有javascript,DropDownList的SelectedIndexChanged事件将在Button-Click(处理按钮的Click-Event之前)之后被调用 . 用户对文本框的输入将被SelectedIndexChanged事件覆盖 .

如果按钮单击触发SelectedIndexChanged事件,如何在Code后面检测?如何才能让用户更改文本框的文本?

编辑:我可以使用属性IsPostBackEventControlRegistered吗?单击按钮时似乎总是如此,但在SelectedIndexChanged事件中为false .

1 回答

  • 0

    嗯,这是可能的,但并不容易 . 您基本上需要通过使用隐藏字段来跟踪是否启用了javascript,执行以下操作:

    <asp:HiddenField ID="JSEnabled" runat="server" ClientIDMode="Status" Value="F" />
    
    <script type="text/javascript">
        function checkForJavaScript() {
            $("#JSEnabled").val("T");
        }
    </script>
    

    你可以从window.onload或jquery.ready事件中调用这个脚本,无论你喜欢什么样的JS选项,这都可以告诉你是否启用了JS来执行selectedindexchanged事件,或者是否因为JS未启用而触发了它 . 要判断按钮是否被单击并导致回发,您可以检查:

    Request.Form.Get("__EVENTTARGET")
    

    字段并查看ID是否与按钮的UniqueID匹配 . ASP.NET中的每个控件都设置了它的ID(通常,但并非总是,由于某些原因) . 虽然,我不确定,你可能必须设置 UseSubmitBehavior="False" 才能实现 . 隐藏的字段可以被操纵,因此它不是完全的 .

    你应该问的问题是,你真的需要这种复杂性吗?

相关问题