使用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>
答案 0 :(得分:1)
CheckSelected()应返回true或false,如果返回false值,则不会发生操作。
所以它应该看起来像onclientclick="return CheckSelected()"