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

时间:2014-03-31 12:06:18

标签: asp.net drop-down-menu postback selectedindexchanged javascript

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

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

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

1 个答案:

答案 0 :(得分: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"才能实现。隐藏的字段可以被操纵,因此它不是完全的。

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