Правильна ли моя логика? Я пытаюсь сделать выпадающий список и отображать определенный <td> в зависимости от выбранного значения?

0

У меня есть раскрывающийся список, который имеет 2 значения - Y (Да) и N (Нет). Если бы я выбрал значение "Y", то отобразится некий <td>, но я не смогу достичь этого результата. Что случилось с моим кодом? Пока я могу только скрыть это.

Здесь мой код asp.net

        <tr class="inputRows">
            <td class="colHead">Mailing</td>
            <td>
                <asp:DropDownList ID="ddlMail" runat="server">
                    <asp:ListItem Selected="True" Value="empty">- - -</asp:ListItem>
                    <asp:ListItem Value="Y">Yes</asp:ListItem>
                    <asp:ListItem Value="N">No</asp:ListItem>
                </asp:DropDownList>
            </td>

            <td class="colHead" id="lblC">Carrier</td>
            <td id="ddlC">
                <asp:DropDownList ID="ddlCarrier" runat="server">
                    <asp:ListItem Selected="True" Value="empty">- - -</asp:ListItem>
                    <asp:ListItem Value="Dlv">Delivery</asp:ListItem>
                    <asp:ListItem Value="Pck">Pick-up</asp:ListItem>
                </asp:DropDownList>
            </td>
        </tr>

И вот мой код jQuery

$(document).ready(function () {
        $('#lblC').hide();
        $('#ddlC').hide();

        var i = document.getElementById("ddlMail");
        var value = i.options[i.selectedIndex].text;

        if (value == "Y") {
            $('#lblC').show();
            $('#ddlC').show();
        }
    });
  • 0
    Используйте идентификатор клиента вашей комбинации или используйте $ ("select [id $ = DDL]"). Val ();
  • 0
    привет, что такое asp: ListItem?
Теги:
select
selecteditem

5 ответов

1
Лучший ответ

используйте изменение при изменении выбранного элемента и

$(document).ready(function () {    
    change($("#ddlMail"));

    $("#ddlMail").change(function () {
       change($(this));
    });    
});

function change(obj){
    if ($(obj).val() == "Y") {
        $('#lblC').show();
        $('#ddlC').show();
    }
    else{
        $('#lblC').hide();
        $('#ddlC').hide();
    } 
}

http://jsfiddle.net/JNPU8/

0

Используйте <%=ddlMail.ClientID%> или лучше

 $("select[id$=ddlMail]").val();
0

Выпадающее меню изменит значение id на время или рендеринг, поэтому вы должны clientId раскрывающийся список либо с помощью clientId либо с classname. Если вы укажете имя класса для этого выпадающего списка, ваш код должен выглядеть так:

$(".ddlCarrier").change(function () {
    if ($(this).val() == "Y") {
        $('#lblC').show();
        $('#ddlC').show();
    }

});

Html

<asp:DropDownList ID="ddlCarrier" class="ddlCarrier" runat="server">
0
    $(document).ready(function () {
            $('#lblC').hide();
            $('#ddlC').hide();

            var i = document.getElementById("<%=ddlMail.ClientID%>")
            var value = i.options[i.selectedIndex].value;

            if (value == "Y") {
                $('#lblC').show();
                $('#ddlC').show();
            }
        });

Используйте ClientID в элементе управления dropdownlist, потому что это серверный контроль.

0

Вы можете получить id выпадающего списка с помощью ClientID:

var i = document.getElementById("<%=ddlMail.ClientID%>")

Также вам нужно получить значение выбранного параметра, а не текст, чтобы вы могли использовать:

var value = i.options[i.selectedIndex].value;

вместо:

var value = i.options[i.selectedIndex].text;

Окончательный код выглядит так:

$(document).ready(function () {
    $('#lblC').hide();
    $('#ddlC').hide();

    var i = document.getElementById("<%=ddlMail.ClientID%>");
    var value = i.options[i.selectedIndex].value;

    if (value == "Y") {
        $('#lblC').show();
        $('#ddlC').show();
    }
});
  • 0
    Это работает, ну вроде. Я должен выбрать «Y» (Да) и перезагрузить страницу, и появляется тд. Есть идеи как это исправить?
  • 0
    Вы получили какую-либо ошибку в консоли?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню