Как динамически отключить TexBox на PostBack - PullRequest
0 голосов
/ 26 марта 2011

Хорошо. Вот фон.

У меня есть приложение, которое должно принимать чеки. У пользователя есть 2 радио кнопки. Первая радиокнопка имеет связанный с ней выпадающий список, который содержит маскированные номера их ранее использованных чековых счетов.

Второй переключатель имеет три текстовых поля и изображение чека, связанного с ним.

Когда пользователь заходит на эту страницу, три текстовых поля и контрольное изображение, связанное со вторым переключателем, отключаются. Затем, если пользователь решает, что он / она хочет использовать новую контрольную учетную запись, он может щелкнуть по второй радиокнопке, и это запускает Javascript, который включает три флажка и изображение чека, связанного с этой второй радиокнопкой. Если щелкнуть первую радиокнопку, она снова отключит текстовые поля и скроет контрольное изображение, связанное со второй радиокнопкой.

Проблема возникает, когда я выполняю проверку на стороне сервера. После проверки всех текстовых полей, если возникает проблема, я просто выпадаю из нижней части кода, страница отправляется обратно, а надписи над ошибочными текстовыми полями показывают сообщение об ошибке.

Одно предупреждение: Javascript, который должен срабатывать при событии OnClick для первых переключателей, а текстовые поля для второго переключателя отключены. Пользователь может нажать на второй переключатель, и поля включатся, но это очень неуклюже.

Вот код включения, где я внедряю 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

Как повторно включить текстовые поля при неудачной проверке обратной передачи?

1 Ответ

1 голос
/ 26 марта 2011

Вы можете вызвать следующую функцию при неудачной проверке обратной передачи:

ClientScript.RegisterStartupScript (Me.GetType, «EnableControlsStartup», «EnableControls ()», true)

Ссылка для справки:

http://msdn.microsoft.com/en-us/library/system.web.ui.page.registerstartupscript.aspx

...