【问题标题】:hide/show table cell based on previous cell根据前一个单元格隐藏/显示表格单元格
【发布时间】:2012-10-30 16:06:38
【问题描述】:

我想根据前一个单元格中的值显示/隐藏表格单元格。如果前一个单元格的值比显示其他隐藏。 Jquery 应该为每一行评估这个。我现在有以下代码:

    jQuery(document).ready(function() {
    jQuery('input[name^="OS"]').hide();
    jQuery('input[name^="OF"]').on('keyup', function(){ 
        jQuery('table#form_er tr').each(function(){ 
            if(!jQuery('input[name^="OF"]').val()){
                jQuery('input[name^="OS"]').hide();}
            else {jQuery('input[name^="OS"]').show();}
        });
    });
});

现在的结果是,即使填充了 OF,所有 OS 单元都被隐藏,如果我填充一个空的 OF,所有 OS 单元都将显示,并且当我清除 OF 单元时,没有任何变化。 有人可以指出我正确的方向吗?谢谢。

【问题讨论】:

  • 你知道你只需要写一次长格式的jQuery吗?通过将代码包装在(function($) { .... })(jQuery); 中,无论noConflict 是否已使用,您都可以使用$。在您的情况下,您可以更轻松地做到这一点:jQuery(document).ready(function($) {,然后在里面使用$。
  • 您好 Thiefmaster,我知道,但我在 web2py 中使用它,而不是像这样使用它。
  • 您能否只显示或隐藏表格单元格,因为看起来您只是在切换输入字段。您也可以使用 jquery 的 next 函数到达下一个节点:jqapi.com/#p=next

标签: jquery


【解决方案1】:

尝试使用 jQuery(this) 和 closest('tr') 仅定位当前行中的单元格..

jQuery(document).ready(function() {
    jQuery('input[name^="OS"]').hide();
    jQuery('input[name^="OF"]').on('keyup', function() {
        jQuery('table#form_er tr').each(function() {
            if (jQuery(this).val() != '') {
                jQuery(this).closest('tr').find('input[name^="OS"]').hide();
            }
            else {
                jQuery(this).closest('tr').find('input[name^="OS"]').show();
            }
        });
    });
});​

如果您要定位的单元格是下一个单元格..那么您也可以这样做..

jQuery(this).closest('td').next('td').find('input[name^="OS"]').hide();

编辑

替换!jQuery(this).val() 用 jQuery(this).val() != ''

【讨论】:

  • 感谢您的回答 Sushant,但这不起作用。结果现在根本没有显示 OS 单元
  • 代替 !jQuery(this).val() 试试这个 jQuery(this).val() != ''
  • 嗨,Sushanth,结果是所有操作系统单元都显示出来了,而且从不隐藏。现在的代码是这样的: jQuery(document).ready(function() { jQuery('input[name^="OS"]').hide(); jQuery('input[name^="OF"]' ).on('keyup', function() { jQuery('table#form_er tr').each(function() { jQuery(this).val() !== '' jQuery(this).closest('td ').next('td').find('input[name^="OS"]').hide(); } else { jQuery(this).closest('td').next('td') .find('input[name^="OS"]').show(); } }); }); });
  • 嗨,Sushanth,我快到了。现在,如果加载页面,所有 OS 单元都被隐藏,我只希望在同一行中的 OF 单元为空时隐藏 OS 单元。此外,如果我填充一个空的 OF 单元,则会显示所有 OS 单元,以及 OF 单元为空的那些。你能帮我多一点吗?
  • 感谢所有回答此问题的人。我已经解决了这个问题。谢谢!
【解决方案2】:

我认为您的代码是正确的,但可能是 $('input[name^="OS"]').val() 为空。

【讨论】:

  • 你好 Liocin,tablerows 是这样的:
  • 是的,我知道,也许你可以看到 Sushanth 的回答使用 $(this) 来获得价值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2011-01-23
  • 2012-07-15
  • 1970-01-01
相关资源
最近更新 更多