2013-12-14 115 views
0

使用ASP.Net,C#。檢查複選框狀態 - Javascript

這是一個javascript函數,用於確保在執行save操作之前,至少檢查一個網格中的複選框。默認情況下,在頁面加載時,將檢查所有框。

問題:當用戶點擊'保存'(並且沒有選中複選框)時,它會提示警報。單擊警報內的確定後,它會刷新頁面,從而清除網格內的文本框。再次檢查所有的複選框。

我想僅顯示警報而不刷新頁面,因爲這會導致服務器端代碼即使在複選框被選中時也會啓動。

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

CheckSelected()應返回true或false,如果返回錯誤值的動作不會發生。 所以它應該看起來像onclientclick="return CheckSelected()"

+0

非常感謝... – Ruby