2011-03-25 58 views
0

好的。這是背景。如何在PostBack上動態禁用TexBox

我有一個應該接受檢查。用戶有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 

我怎樣才能重新啓用在驗證失敗回傳的文本框中?

+0

我很高興我沒有任何關於你正在工作的項目。 – Jason 2011-03-25 22:20:58

+0

爲什麼呢,賈森? – crackedcornjimmy 2011-03-25 22:46:31

+0

它只是看起來最麻煩的方式來做JavaScript和幾乎不可維護 – Jason 2011-03-25 22:47:51

回答