Флажок активирует текстовые поля в asp.net с vb.net - PullRequest
2 голосов
/ 10 мая 2011

Я создаю страницу в asp.net с vb.net, и у меня есть флажок, который я хотел бы использовать, чтобы активировать четыре текстовых поля и раскрывающийся список.Я пытался использовать JavaScript, чтобы заставить это работать, но это пока не работает.Я попытался просто активировать одно текстовое поле на этом этапе.Есть предложения?

Вот мои разные объекты:

  • cbPractitioner (флажок)
  • txtNPI (текстовое поле)
  • txtLicense (текстовое поле)
  • txtDEA (текстовое поле)
  • txtUpin (текстовое поле)
  • ddSpecialty (раскрывающийся список)

Вот код JavaScript:

<script type="text/javascript">
    function ToggleTextBox(cbPractitioner, txtNPI) {
        var textbox = document.getElementById(txtNPI);
        if (cbPractitioner.checked) {
            txtNPI.disabled = false;
            txtNPI.value = "";
        }
        else {
            txtNPI.disabled = true;
            txtNPI.value = "";
        }
    }
 </script>

Вот код asp.net:

<asp:CheckBox ID="cbPractitioner" runat="server" 
                text="This person is a Practitioner" 
                style="font-family: Arial, Helvetica, sans-serif; font-size: small" 
                onclick="ToggleTextBox(this,'txtNPI')" />
<asp:Label ID="lblNPI" runat="server" CssClass="style9" Text="NPI:"></asp:Label>

            &nbsp;

            <asp:TextBox ID="txtNPI" runat="server" Width="165px" style="text align:left" CssClass="style9" 
                    Font-Names="Arial" Font-Size="Small" Enabled="false"></asp:TextBox>

            <br />
            <br />
            <asp:Label ID="lblDEA" runat="server" CssClass="style9" Text="DEA Number:">    </asp:Label>
            &nbsp;
            <asp:TextBox ID="txtDEA" runat="server" style="text-align:left" Font-Names="Arial" 
                    Font-Size="Small" Enabled="false"></asp:TextBox>
            <br />
            <br />
            <span class="style9">

            </span>

        </td>
        <td class="style14" valign="top">

            <asp:Label ID="lblLicense" runat="server" CssClass="style9" 
                Text="License Number:"></asp:Label>
            &nbsp;
            <asp:TextBox ID="txtLicense" runat="server" Font-Names="Arial"  style="text-align:left"
                    Font-Size="Small" Height="20px" Enabled="false"></asp:TextBox>
            <br />
            <br />
            <span class="style9">
            <asp:Label ID="Upin" runat="server" Text="Upin:"></asp:Label>
            &nbsp;
            </span>

            <asp:TextBox ID="txtUpin" runat="server" Width="173px" CssClass="style9" style="text-align:left"
                    Font-Names="Arial" Font-Size="Small" Enabled="false"></asp:TextBox>

        </td>
    </tr>
    <tr>
        <td colspan="2">
            <asp:Label ID="lblSpecialty" runat="server" 
                style="font-family: Arial, Helvetica, sans-serif; font-size: small" 
                Text="Specialty:"></asp:Label>
            <asp:DropDownList ID="ddSpecialty" runat="server" 
                DataSourceID="Practitioner_Specialty" DataTextField="SPEC_TITLE" 
                DataValueField="SPEC_TITLE" Enabled="false">
            </asp:DropDownList>

Ответы [ 2 ]

4 голосов
/ 10 мая 2011

Проблема в том, что текстовые поля ASP.net и другие элементы управления на самом деле имеют два идентификатора: идентификатор на стороне сервера и идентификатор на стороне клиента.

Идентификатор на стороне сервера - этотот, который вы указываете в разметке с ID='foo' RunAt='server'.Этот идентификатор используется во всех ваших .net-кодах на стороне сервера.

Для кода на стороне клиента необходимо использовать идентификатор на стороне клиента.Идентификатор на стороне клиента генерируется из идентификатора на стороне сервера с некоторыми символами, добавленными к нему, чтобы убедиться, что он уникален.Чтобы получить идентификатор на стороне клиента в своем Javascript, напишите что-то вроде этого:

var cbPractitionerId = '<% = cbPractitioner.ClientID%>';

0 голосов
/ 10 мая 2011

Вы передаете идентификатор вашей функции с именем 'txtNPI', но вы использовали его как объект.Я изменил код для использования объекта «текстовое поле» и добавил «removeAttribute» для удаления отключенного состояния текстового поля.

<script type="text/javascript">
    function ToggleTextBox(cbPractitioner, txtNPI) {
        var textbox = document.getElementById(txtNPI);
        if (cbPractitioner.checked) {
            textbox.removeAttribute('disabled');
            textbox.value = "";
        }
        else {
            textbox.removeAttribute('disabled');
            textbox.value = "";
        }
    }
 </script>

Кроме того, если вы хотите вставить динамический ASP.NETИдентификаторы в JavaScript, вы должны использовать синтаксис <% = Control.ControlID%>, и это будет вставить динамически сгенерированное имя элемента управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...