如果选中复选框,如何隐藏和显示项目

时间:2013-03-21 14:43:31

标签: javascript jquery asp.net html

我试图隐藏并根据是否选中复选框显示区域。我尝试了一些选项,但是这个区域一直都是可见的,或者它一直都是隐藏的。

JavaScript:

$(document).ready(function () {
    var mgift = $('#chkbxMGift input[type=checkbox]');     
    MshowHide();    

    mgift.change(function () {
        MshowHide();
    });
});


function MshowHide() {
    var mgift = $('#chkbxMGift input[type=checkbox]');
    var shcompany = $('#shcompany');

    if (mgift.checked) {
        shcompany.show();
    } else {       
        shcompany.hide();        
    }
}

HTML:

<li>
    <div class="info">                 
        <asp:CheckBox ID="chkbxMGift" runat="server" Text="A matching gift will be made" ClientIDMode="Static"/>
    </div>
</li>

<li id="shcompany">    
    <div class="info">               
        <label for="txtCompanyName">Company Name</label>
        <asp:TextBox runat="server" ID="txtCompanyName" CssClass="narrow" />   
    </div>
    <div class="info">  
        <label for="txtCompanyPhone">Company Phone Number</label>
        <asp:TextBox runat="server" ID="txtCompanyPhone" CssClass="narrow"  />       
    </div>
</li>    

如何才能正常运作?

5 个答案:

答案 0 :(得分:8)

试试此代码

     $(document).ready(function () {
     $('#chkbxMGift').click(function () {
         var $this = $(this);
         if ($this.is(':checked')) {
             $('#shcompany').hide();
         } else {
             $('#shcompany').show();
         }
     });
 });

希望它能解决您的问题

答案 1 :(得分:3)

你的选择器错了。

var mgift = $('#chkbxMGift input[type=checkbox]'); 

这意味着您从父input中选择了子节点#chkbxMGift

我相信这是你需要的选择器:

var mgift = $('input#chkbxMGift[type=checkbox]'); 

以下是对您的代码的一些改进:

$(document).ready(function () {
    var mgift = $('input#chkbxMGift[type=checkbox]'); 
    var shcompany = $('#shcompany');
    // check for default status (when checked, show the shcompany)
    if (mgift.attr('checked') !== undefined){
        shcompany.show();
    } else {
        shcompany.hide();
    }

    // then simply toggle the shcompany on every change
    mgift.change(function(){
        shcompany.toggle();
    });
}); 

jQuery的toggle非常有用,并且在1.0版中添加了,所以你应该能够使用它。

这是jsFiddle中的概念证明,只有最低限度:

http://jsfiddle.net/Y39Bu/1/

答案 2 :(得分:1)

这是从this回答:

中被盗的

http://jsfiddle.net/MH8e4/4/

$('.wpbook_hidden').css({
'display': 'none'
});

alert($(':checkbox:checked').attr('id'))
$(':checkbox').change(function() {
    var option = 'wpbook_option_' + $(this).attr('id');
    if ($('.' + option).css('display') == 'none') {
        $('.' + option).fadeIn();
    }
    else {
        $('.' + option).fadeOut();
    }
});

在你问你之前搜索类似的问题。如果这可以解决您的问题,请给原作者

答案 3 :(得分:0)

您是否尝试过直接更改CSS?如

document.getElementById("shcompany").style.display="none";

document.getElementById("shcompany").style.visibility="hidden";

(或“可见”)

答案 4 :(得分:0)

为什么在简单的CSS属性更改可以解决问题时使用JQuery?

只需更改div的类或修改它的样式:

如果您希望占用空间,即使隐藏,请使用visibility:hidden(分别为visibility:visible

如果您希望 NOT 在隐藏时占用空间,请使用css display:none(分别为display:block