ASP.NET TextBox的OnTextChanged服务器事件应该在转到服务器之前触发一些客户端代码

时间:2011-11-23 10:57:28

标签: asp.net events

我的UserControl有一个TextBox,它订阅了OnTextChanged事件。但是,由于服务器上发生了很多业务逻辑和集成,我想在使用某些客户端javascript执行回发的同时禁用表单,我不知道如何以正确的方式实现它。

我可以使用ClientScriptManager.GetPostBackEventReference来解决这个问题吗?

编辑:因为我的问题似乎被误解了:

TextBox订阅了事件OnTextChanged =“tb_TextChanged”,这将导致onchange = __ doPostBack('tb')中的客户端,所以我想将我的javascript disableForm()注入onchange DOM事件。我知道如何实现disableForm(),问题是如何正确地注入我的JavaScript?

2 个答案:

答案 0 :(得分:1)

我建议您使用javascript onblur事件并检查字段值是否已更改。如果是这样,您可以使用如下所示的jQuery来禁用表单元素。

要禁用表单元素,例如文本输入或按钮(带有虚构的ID:#elm):

$("#elm").attr("disabled", "disabled");

启用已停用的表单元素:

$("#elm").removeAttr("disabled");

答案 1 :(得分:0)

您应该可以使用一些简单的JavaScript来执行此操作:

<script type="text/javascript">
    disableFormFields = function(){
        if (document.all || document.getElementById){
            for (i = 0; i < document.forms[0].elements.length; i++){
                var el = document.forms[0].elements[i];
                if (el){
                    el.disabled = true;
                }
            } 
        }
    }
</script>
<asp:TextBox ID="TextBox1" runat="server" onchange="disableFormFields();" OnTextChanged="TextBox1_TextChanged" />