У меня есть раскрывающийся список, который имеет 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();
}
});
используйте изменение при изменении выбранного элемента и
$(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();
}
}
Используйте <%=ddlMail.ClientID%>
или лучше
$("select[id$=ddlMail]").val();
Выпадающее меню изменит значение id на время или рендеринг, поэтому вы должны clientId
раскрывающийся список либо с помощью clientId
либо с classname
. Если вы укажете имя класса для этого выпадающего списка, ваш код должен выглядеть так:
$(".ddlCarrier").change(function () {
if ($(this).val() == "Y") {
$('#lblC').show();
$('#ddlC').show();
}
});
Html
<asp:DropDownList ID="ddlCarrier" class="ddlCarrier" runat="server">
$(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, потому что это серверный контроль.
Вы можете получить 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();
}
});