检查文本框是否有值然后禁用表单元素

时间:2013-05-15 13:53:48

标签: jquery

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

3 个答案:

答案 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)

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

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

http://jsfiddle.net/Z4TRt/