2016-08-04 90 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

該解決方案將按鈕從禁用改爲啓用並按要求返回,但回發和全屏刷新並不理想。此應用程序的用戶可能認爲回發時發生錯誤。回發的副作用是頁面跳回到屏幕的頂部,要求用戶再次向下滾動以點擊註冊按鈕,並且必須重新輸入密碼文本框(在本文中未被引用)。 –

相關問題