繁体   English   中英

如何在PostBack上动态禁用TexBox

[英]How to dynamically disable a TexBox on PostBack

好。 这是背景。

我有一个应该接受检查的应用程序。 用户有2个单选按钮。 第一个单选按钮具有一个与其关联的下拉列表,其中包含其先前使用的支票账户的掩码编号。

第二个单选按钮具有三个文本框以及与之关联的支票图像。

当用户单击此页面时,将禁用三个文本框以及与第二个单选按钮关联的检查图像。 然后,如果用户决定要使用新的支票帐户,则可以单击第二个单选按钮,并触发启用三个复选框的Javascript以及与该第二个单选按钮关联的支票图像。 如果他们单击第一个单选按钮,它将重新禁用文本框并隐藏与第二个单选按钮关联的检查图像。

我进行服务器端验证时会发生问题。 验证所有文本字段后,如果有问题,我将跌出代码底部,页面回发,并且有问题的文本字段上方的标签显示错误消息。

一个警告:应该触发第一个单选按钮的OnClick事件的Javascript,而禁用第二个单选按钮的文本字段。 用户可以单击第二个单选按钮,并且该字段将启用,但这非常笨拙。

这是我在其中注入Javascript的启用代码:

Private Sub JavascriptInject()
        Dim sEnableControls As String
        Dim sDisableControls As String

        'write out the enable controls script
        sEnableControls = "<script type=""text/javascript"">function EnableControls(){ "
        sEnableControls = sEnableControls & "document.getElementById('txtRoutingNumMult').disabled=false;"
        sEnableControls = sEnableControls & "document.getElementById('txtECheckNumMult').disabled=false;"
        sEnableControls = sEnableControls & "document.getElementById('txtECHeckNameMult').disabled=false;"
        sEnableControls = sEnableControls & "document.getElementById('imgCheckMult').style.display='';"
        sEnableControls = sEnableControls & " }</script>"

        'write out the disable controls script
        sDisableControls = "<script type=""text/javascript"">function DisableControls(){ "
        sDisableControls = sDisableControls & "document.getElementById('txtRoutingNumMult').disabled=true;"
        sDisableControls = sDisableControls & "document.getElementById('txtECheckNumMult').disabled=true;"
        sDisableControls = sDisableControls & "document.getElementById('txtECHeckNameMult').disabled=true;"
        sDisableControls = sDisableControls & "document.getElementById('imgCheckMult').style.display='none';"
        sDisableControls = sDisableControls & " }</script>"

        'inject it
        ClientScript.RegisterStartupScript(Me.GetType, "EnableControls", sEnableControls)
        ClientScript.RegisterStartupScript(Me.GetType, "DisableControls", sDisableControls)

        rbECheckNew.Attributes.Add("OnClick", "EnableControls()")
        rbECheckPrev.Attributes.Add("OnClick", "DisableControls()")

    End Sub

如何在验证失败的回发中重新启用文本框?

您可以在验证失败回发时调用以下函数:

ClientScript.RegisterStartupScript(Me.GetType,“ EnableControlsStartup”,“ EnableControls()”,true)

参考链接:

http://msdn.microsoft.com/zh-CN/library/system.web.ui.page.registerstartupscript.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM