如果我的文本框中有文本,我想禁用下拉列表。文本框ID为“newAccessPoint”,下拉列表ID为“selectAccessPoint”
jQuery的:
if ($.trim($('#newAccessPoint').val()).length() != 0) {
$('#selectAccessPoint').attr('disabled', 'disabled');
}
HTML标记:
<table class="data-table">
<tr>
<td><label for ="AccessPoint" class="xl">Access Point:</label></td>
<td><%= Html.DropDownListFor(x => x.AccessPointsList.Id, Model.AccessPointsList.AccessPoints.OrderByDescending(x => x.Value.AsDecimal()), new { @id = "selectAccessPoint", @class = "info1"})%></td>
</tr>
<tr>
<td><label for ="AccessPoint" class="xl">Or Add New:</label></td>
<td><%= Html.TextBoxFor(x => x.AccessPointsList.AccessPoint, new { @id = "newAccessPoint", @class = "location info2 xl", maxlength = "250" }) %></td>
</tr>
答案 0 :(得分:3)
问题是您有length()
。 length
是属性,而不是对象。您只需使用length
。
if ($.trim($('#newAccessPoint').val()).length != 0) {
$('#selectAccessPoint').attr('disabled', 'disabled');
}
根据您使用的jQuery版本,您需要使用prop()
代替attr()
:
if ($.trim($('#newAccessPoint').val()).length != 0) {
$('#selectAccessPoint').prop('disabled', true);
}
修改(来自评论):
以下是文本框input
上使用的 JSFiddle demo ,它会在文本框中包含内容时禁用select
元素,然后重新启用它当它被清除。
答案 1 :(得分:1)
if ($.trim($('#newAccessPoint').val()).length != 0) {
$('#selectAccessPoint').prop('disabled', true);
}
答案 2 :(得分:1)
您需要的是onBlur
事件处理程序:
<input type="text" id="newAccessPoint">
<select id="selectAccessPoint">
<option>test</option>
</select>
$('#newAccessPoint').blur(function() { if($('#newAccessPoint').val().length > 0) { $('#selectAccessPoint').attr('disabled', 'disabled'); } });