如果input(type = text)有值,则启用select元素

时间:2010-03-10 16:53:45

标签: jquery

我有一张桌子,有很多行。例如,来自行之一(所有行都相同):

             <tr>
                <td>
                    <input type="text" />
                </td>
                <td>
                    <textarea cols="40" rows="3" ></textarea>
                </td>
                <td>
                    <select id="chbTypes11">
                        //options
                    </select>
                </td>
                <td>
                    <input type="text" />
                </td>
                <td>
                    <input type="checkbox" />
                </td>
            </tr>

默认情况下禁用select元素。 如何判断,输入值有价值?用于启用此行中的select元素

3 个答案:

答案 0 :(得分:4)

如果通过'input'表示除select之外的任何类型的输入元素,则:

$("tr input, tr textarea").change(function() {
    var $select = $(this).closest("tr")
                         .find("td > select");
    $select.attr("disabled", !($.trim(this.value).length > 0));
});

// IE and checkbox change events don't like each other
$("tr :checkbox").click(function() {
    $(this).closest("tr").find("td > select")
                         .attr("disabled", !$(this).is(":checked"));
});

如果您只是引用文本框,只需将选择器更改为$("tr input:text")

即可

答案 1 :(得分:3)

$('tr:has(td input[value!=""])')

(或接近那个)

[value!=“”]应匹配所有非空值属性。

答案 2 :(得分:1)

您使用$(...).val()检索值,但这还不足以解决您的问题。您需要知道...的内容。由于这些<input>元素可能是动态生成的,您可能希望根据某种事件(即输入框的更改事件)执行此操作,或者如果它们是服务器生成的,请为它们提供与该行中的其他元素可以让您自己更轻松。