检查CheckBox状态 - Javascript

时间:2013-12-14 12:22:09

标签: c# javascript asp.net

使用ASP.Net,C#。

这是一个javascript函数,用于确保在执行保存操作之前检查网格中的至少一个复选框。默认情况下,在页面加载时,将检查所有框。

问题:当用户点击“保存”(并且未选中任何复选框)时,会提示警报。在警报内单击“确定”后,它将刷新页面,从而清除网格内的文本框。同时再次检查所有复选框。

我想显示警告而不刷新页面,因为这导致服务器端代码即使未选中复选框也会启动。

JS:

<script type="text/javascript">

function CheckSelected()
{
var elements = document.getElementById('<%=gvLeaves.ClientID%>').
               document.getElementById("INPUT");
var status=false;
var chk;
for(var i=0;i<elements.length;i++)
{
  if(elements[i]!=null)
   {
     if(elements[i].id.indexof('chkLeaveType')>0)
       {
         chk=elements[i];
         if(chk.checked)
          {
            status=true;
            break;
           }
        }
    }        
 }
  if(status==true)
     return true;
    else
     {
      alert('None Selected');
      return false;
     }
}
</script>

ASPX

<asp:updatepanel runat="server" updatemode="conditional">    
<triggers>    
<asp:asyncpostback controldid="btnsave" eventname="click"/>    
</triggers>    
<contenttemplate>    
<asp:gridview id="gvleaves" runat="server">    
<columns>    
  <asp:templatefield>     
   <headertemplate>       
    <asp:checkbox id="chkheader" runat="server" checked="true" 
      onclick="SelectAll(this.id)"/>    
  Leave Type      
   </headertemplate>    
   <itemtemplate>    
      <asp:checkbox id="chkLeaveType" runat="server" checked="true"/>    
      <%#Eval("leavetype")%>    
   </itemtemplate>    
  </asp:templatefield> 
  <asp:templatefield> 
   <itemtemplate>    
      <asp:textbox id="txtdays" runat="server"/>   
   </itemtemplate> 
  </asp:templatefield>     
</columns>    
</asp:gridview>    
<asp:button id="btnSave" runat="server" 
 onclientclick="CheckSelected();" onclick="btnsave_click"/>    
</contenttemplate>    
</asp:updatepanel>

1 个答案:

答案 0 :(得分:1)

CheckSelected()应返回true或false,如果返回false值,则不会发生操作。 所以它应该看起来像onclientclick="return CheckSelected()"