ASP.NET: переключатели «Да / Нет». Если да, включить текстовое поле?

Я поискал ответ в нескольких разных местах и ​​проверил темы вот так, но не смог найти подходящего ответа.

Я создаю веб-приложение для бумажной формы (очень похоже на пользователя в опубликованной мной ссылке). Однако, в отличие от этого пользователя, я НЕ использую панель обновления для дисплея. Его пост был недостаточно описательным, чтобы я мог понять, как воспроизвести то, что он сделал, чтобы заставить его работать.

Все, что мне нужно, это иметь asp RadioButtonList; когда отмечено «Да», включите «Дата отчета» (см. ниже, как это выглядит в настоящее время в форме); «Остальное» отключите его.

введите здесь описание изображения

   <div class="col-xs-6 text-right">
                        <b>Reported to a Supervisor?</b><br>
                    </div>
                    <asp:RadioButtonList ID="RadioButtonList_ReportedToSupervisor" runat="server"
                        RepeatDirection="Horizontal">
                        <asp:ListItem Text="Yes" Value="1"></asp:ListItem>
                        <asp:ListItem Text="No" Value="0"></asp:ListItem>
                    </asp:RadioButtonList>
                    <br>
                    <div class="col-xs-6 text-right">
                        <b>Reported Date:</b><br>
                    </div>
                    <div class="col-xs-6">
                        <asp:TextBox
                            runat="server"
                            ID="TextBox_ReportedDate"
                            class="form-control"
                            style="max-width:125px" />
                        <asp:RegularExpressionValidator
                            ID="RegularExpressionValidator_ReportedDate"
                            runat="server"
                            ControlToValidate="TextBox_ReportedDate"
                            ErrorMessage="Invalid date"
                            ValidationExpression="^^((0[1-9])|(1[0-2]))\/((0[1-9])|(1[0-9])|(2[0-9])|(3[0-1]))\/(\d{4})$"
                            Display="Dynamic"
                            SetFocusOnError="True"
                            Font-Bold="true"
                            ForeColor="red" />
                        <ajaxToolkit:MaskedEditExtender ID="maskededitextender_ReportedDate" runat="server" TargetControlID="TextBox_ReportedDate" Mask="99/99/9999" MaskType="Date" AcceptNegative="None" />
                    </div>

Я новичок в создании веб-приложений, поэтому прошу прощения, если это относительно глупый вопрос. Я недостаточно знаком с общими элементами управления ASP.NET, чтобы самому в этом разобраться.

Большое спасибо!


person Kudin    schedule 13.04.2016    source источник


Ответы (3)


Задайте для свойства OnTextChanged вашего RadioButtonList имя метода (который вы создадите), а для свойства AutoPostBack - значение true. Установите для свойства Enabled вашего TextBox значение false. Затем в создаваемом вами методе. Включите TextBox:

protected void EnableTextBox(object sender, EventArgs e)
    {
                        TextBox_ReportedDate.Disabled = false;      }

Или вы можете сделать это в javascript. В методе PageLoad () установите для свойства onchange RadioButtonList значение функции javascript, которую вы напишете:

RadioButtonList_ReportedToSupervisor.Add("onchange", "EnableTextBox('" + TextBox_ReportedDate.ClientID + "');");

Затем добавьте эту функцию javascript на свою страницу aspx:

<script language="javascript" type="text/javascript">
function EnableTextBox(RBLID)
{
    var textbox = document.getElementById(RBLID);
    textbox.disabled = false;
}

person Melanie    schedule 13.04.2016

Попробуй это.

$('#RadioButtonList_ReportedToSupervisor input').change(function () {
 var selectedvalue = $(this).val();
 if (selectedvalue === "1")
 {
     $("#TextBox_ReportedDate").attr('disabled', 'disabled');

 }
 else if (selectedvalue === "0") {
     $("#TextBox_ReportedDate").removeAttr('disabled');
 }
});
person saifiqbal    schedule 13.04.2016
comment
Он работает, но вы показываете / скрываете TextBox вместо того, чтобы включать / отключать его (см .: stackoverflow.com/questions/1414365/). - person ConnorsFan; 14.04.2016

попробуй это:

 $("input[name=toggle]").on('click', function() { var checked = $("input[name=toggle]").prop('checked');
console.log(checked);
   if(checked) { $("#yourbtnId").show();  } 
   else { $("#yourbtnId").hide(); }
                                                 });
<input type="radio" name="toggle" value="1">Toggle

person VicYam    schedule 14.04.2016