【问题标题】:.load content when checkbox checked, remove when unchecked. 选中复选框时加载内容,未选中时删除
【发布时间】:2013-06-14 11:34:16
【问题描述】:

我有许多复选框,当检查时,调用下面的脚本以在表单中显示使用.load

的HTML中的块
$('input.article').click(function(){
        var bits = $(this).attr('id').split('_');
        var id = bits[1];
        var article = 'article_' + id + '.html';
        $('#form_' + id).load('<?php echo base_url(); ?>assets/html/' + article);
        $('#form_' + id).toggle();
        $('.submit').show();
    });

表单是在视图中动态创建的,如下所示:

<?php for($i = 1; $i <= 8; $i++){ ?>
        <div id="form_<?php echo $i; ?>" class="hide">
       </div>
<?php } ?>

但是,每当复选框未选中时,我都需要删除加载的 html,这就是我卡住的地方。使用.toggle()html 是隐藏的,但它仍然被提交。知道如何实现这一目标吗?

【问题讨论】:

  • 任何HTML好吗?要检查复选框是否被选中,请使用is(':checked')

标签: javascript jquery show-hide


【解决方案1】:

试试这个 -

$('input.article').click(function(){
        var bits = $(this).attr('id').split('_');
        var id = bits[1];
        var article = 'article_' + id + '.html';
        if(this.checked){
          $('#form_' + id).load('<?php echo base_url(); ?>assets/html/' + product);
        }
        else{
          $('#form_' + id).empty();  
        }
        $('.submit').show();
});

【讨论】:

  • 这很简单!问题解决了!我正在尝试if($(this)+':checked')){这显然不是正确的方法......谢谢:)
【解决方案2】:

所以添加一个检查,看看它是否被选中。如果不是,则清空其内容并将其隐藏。

var bits = $(this).attr('id').split('_');
var id = bits[1];
if (this.checked) {
    //...get content
} else {
    $('#form_' + id).empty().hide();
} 

【讨论】:

    【解决方案3】:

    仅在容器为空时加载内容,并根据复选框是否选中来切换容器:

    $('input.article').on('change', function(){
        var id      = $(this).attr('id').split('_')[0],
            article = 'article_' + id + '.html',
            form    = $('#form_' + id);
    
        if (form.is(':empty'))
            form.load('<?php echo base_url(); ?>assets/html/' + article);
    
        form.toggle(this.checked);
        $('.submit').show();
    });
    

    【讨论】:

    • 感谢您的回复@adeneo。您的解决方案与提供的 pXL 有点相似。这两种解决方案中哪一种最有效?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多