簡體   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