仅当文本框不是空的asp.net时启用复选框

时间:2015-02-18 14:29:42

标签: c# asp.net

我需要在checkbox填充后才能显示textbox及其附近的文字。否则它应该是隐形的。

<p>Telefon:<asp:TextBox ID="txtPhone" runat="server"></asp:TextBox></p>  
<asp:CheckBox ID="CheckBox2" runat="server" Visible="False" Text="bla bla"/>  

无论是代码隐藏还是javascript都可以。

2 个答案:

答案 0 :(得分:2)

Mason的回答对我来说是部分工作,这意味着ID是静态的,它可以在jQuery中达到两个条件。但是,我的HTML使用带有<span></span>元素的CheckBox2进行渲染。所以我必须这样做才能使它发挥作用。

<p>Telefon:<asp:TextBox ID="txtPhone" ClientIdMode="static" runat="server"></asp:TextBox>  
<asp:CheckBox ID="CheckBox2" ClientIdMode="static" runat="server" Text="blabla" style="display: none;" />

$(function () {
    $('#txtPhone').on('input propertychange paste', function () {
         if ($('#txtPhone').val()) {
                $("#CheckBox2").parent().show();
                }
                else {
                    $("#CheckBox2").parent().hide();
                }
            });
        });

答案 1 :(得分:1)

您应该使用JavaScript执行此操作。 This question告诉我们如何检测文本框值的变化。 This question告诉我们如何判断文本框是否为空。 This demo向我们展示了如何使用jQuery隐藏和显示内容。

请注意,我为控件设置了ClientIdMode="static",以避免客户端上的ID与服务器上的ID不同。而不是使用复选框上的Visible属性,我使用display: none CSS。 Visible="false"甚至不会将复选框的标记发送到客户端,我们需要该标记,以便我们可以在没有回发的情况下显示它。

<p>Telefon:<asp:TextBox ID="txtPhone" ClientIdMode="static" runat="server"></asp:TextBox></p>  
<asp:CheckBox ID="CheckBox2" ClientIdMode="static" runat="server" Text="bla bla" style="display: none" /> 

$(function() {    
    $('#txtPhone').on('input propertychange paste', function() {
        if($('#txtPhone').val()){
            $("#CheckBox2").show();
        }
        else{
             $("#CheckBox2").hide();
        }
    });
});