0

我有一个有 4 列的表格和一个提交按钮。像这样:

FOOD    YES    NO    REASON
pizza   cb     cb    tb
fries   cb     cb    tb
curry   cb     cb    tb
noodle  cb     cb    tb

[SUBMIT]

我需要的是,如果选中任何“否”框但其相应的文本框为空,则禁用该按钮。我有这个工作在一定程度上。如果你按顺序浏览每一个,那很好。因此,您对披萨说“是”,并且该按钮保持启用状态。您将其更改为否,该按钮被禁用。您提供了一个原因,然后按钮再次启用。您清除文本框并再次禁用该按钮。您更改回是并且按钮已启用。然后你对薯条做同样的事情,一切都很好。等等。

但是,如果您为所有这些选择否并提供所有原因(因此启用按钮),但随后清空披萨的文本框,则该按钮不会像应有的那样被禁用。但是,如果您清除面条,那就可以了。

我一直在尝试做的是每次单击复选框或在“原因”列中的 keyup 时循环遍历表格,但我对 jQuery 很陌生,并不知道该怎么做......任何人都可以帮助?

谢谢。

代码:

$('input[type=checkbox]').click(function(){
        checkReasons();
}

$('input[type=text]').keyup(function(){
        checkReasons();
});

function checkReasons(){
    $('#mytable tr:not(:first)').each(function(){
        var cb = $(this).find('td:nth-child(3) input[type=checkbox]');
        var tb = $(this).find('td:nth-child(4) input[type=text]').val();
        if (cb.is(':checked')){
            if (tb.length == 0){
                $('#button').attr('disabled','disabled');                
            } else {
                $('#button').removeAttr('disabled','disabled');
            }
        } 
    });
}
4

1 回答 1

1

不使用.attr(),使用.prop()http://api.jquery.com/prop/

并且可能更好地处理change事件,而不是clickkeyup事件,这可能在值实际更改之前发生。

如何在此处执行此操作的示例:http: //jsfiddle.net/EQkLB/

于 2013-10-16T12:34:51.240 回答