2016-08-04 56 views
-2

当我搜索时,我看到一些旧/呃的帖子,但无论出于何种原因,我无法获得任何代码示例在我的项目中工作。使用复选框启用按钮

我想使用复选框控件来启用/禁用提交按钮,以便用户必须同意使用条款才能注册。

使用SQL Server后端,asp.net和C#。我宁愿使用JavaScript来做到这一点启用/禁用,但打开任何有效的。

在这一点上,我已经放弃了对实际代码的所有尝试,并希望有人可以协助提出可行的事情(因此为什么不在下面的JavaScript)。

asp.net控件:

<div> 
<asp:CheckBox ID="checkbox1" runat="server" Text="I Agree" Checked="false" /> 
    </div> 
    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <asp:Button runat="server" ID="btnRegister" OnClick="CreateUser_Click" Text="Register" CssClass="btn btn-default" Enabled="false"/> 
     </div> 
    </div> 

更新2016年8月5日 - 我试图在由多人为重复指示的项目的代码,这是行不通的。在提交的问题中,复选框是一个HTML项目,而不是asp.net,并且该按钮根本没有被引用。我试图改变代码以适应,但是当我选中/取消选中复选框时,按钮上没有任何事情发生。

能够使用下面的Javascript做所需的功能:

$(function() { 
    var $btn = $(":submit[id$=btnRegister]"); 
    var $chk = $(":input:CheckBox[id$=checkbox1]"); 
    // check on page load 
    checkChecked($chk); 
    $chk.click(function() { 
     checkChecked($chk); 
    }); 
    function checkChecked(chkBox) { 
     if ($chk.is(':checked')) { 
      $btn.removeAttr('disabled'); 
     } 
     else { 
      $btn.attr('disabled', 'disabled') 
     } 
    } 
}); 

+0

如此,因为你没有指定你看什么旧帖子,为什么他们没有工作,你会得到许多重复的接近票数。 [编辑]你的问题并提供这些信息。 –

+0

查看评论添加,重复不起作用在我的项目。 –

回答

1

使用下面的Javascript:

<script type="text/javascript" > $(function() { var $btn = $(":submit[id$=btnRegister]"); 
var $chk = $(":input:CheckBox[id$=checkbox1]"); 
// check on page load checkChecked($chk); $chk.click(function() { checkChecked($chk); }); 
function checkChecked(chkBox) { if ($chk.is(':checked')) { $btn.removeAttr('disabled'); } 
else { $btn.attr('disabled', 'disabled') } } }); 
</script> 
0

我会建议将与UpdatePanel控制来包装这两个控件,并设置UpdateMode=Conditional,并添加一个最简单的方法对于复选框的CheckedChanged事件,为Trigger。另外,为复选框设置AutoPostback=True。然后

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
<Triggers> 
<asp:AsyncPostBackTrigger ControlID="checkbox1" EventName="CheckedChanged " /> 
</Triggers> 
     <ContentTemplate> 
<div> 
<asp:CheckBox ID="checkbox1" runat="server" OnCheckedChanged="Check_Clicked" AutoPostback = "True" Text="I Agree" Checked="false" /> 
</div> 
<div class="form-group"> 
    <div class="col-md-offset-2 col-md-10"> 
     <asp:Button runat="server" ID="btnRegister" OnClick="CreateUser_Click" Text="Register" CssClass="btn btn-default" Enabled="false"/> 
    </div> 
</div> 
</ContentTemplate> 
</asp:UpdatePanel> 

OnCheckedChanged在后端的处理方法就会有这样的事情:

btnRegister.Enabled = checkbox1.Checked 

我希望这可以帮助,我希望我已经说清楚了。

+0

使用以下Javascript:

0
<div> 
    <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="True" OnCheckedChanged="CheckBox1_CheckedChanged" /><br /> 
    <asp:Button ID="Button1" runat="server" Text="Button" /> 
</div> 

protected void Page_Load(object sender, EventArgs e) 
    { 
     Button1.Enabled = false; 
    } 

protected void CheckBox1_CheckedChanged(object sender, EventArgs e) 
    { 
     Button1.Enabled = CheckBox1.Checked; 
    } 
+0

该解决方案将按钮从禁用改为启用并按要求返回,但回发和全屏刷新并不理想。此应用程序的用户可能认为回发时发生错误。回发的副作用是页面跳回到屏幕的顶部,要求用户再次向下滚动以点击注册按钮,并且必须重新输入密码文本框(在本文中未被引用)。 –

相关问题