[英]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.