3

如果我的文本框中有文本,我想禁用下拉列表。文本框 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>
4

3 回答 3

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);
}

编辑(来自评论)

这是一个在 textbox 上使用的JSFiddle 演示input,它在文本框有内容时禁用select元素,然后在清除时重新启用它。

于 2013-05-15T13:56:41.767 回答
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');
    }
});

http://jsfiddle.net/Z4TRt/

于 2013-05-15T14:00:37.093 回答
1

尝试正确使用.length方法和prop()方法:

if ($.trim($('#newAccessPoint').val()).length != 0) {
    $('#selectAccessPoint').prop('disabled', true);
}
于 2013-05-15T13:54:50.020 回答