复选框打开选中已更改通过 JQuery 选中复选框时不触发
本文关键字:复选框 JQuery | 更新日期: 2023-09-27 18:37:04
我使用此代码来选中网格视图行选择上的复选框,该复选框正在工作。但是,除非我单击实际复选框,否则隐藏的代码不会运行。有什么想法吗?
ASPX 代码:
<asp:GridView runat="server" ID="gvReconciledGroups" AutoGenerateColumns="false" EmptyDataText="No Reconciled Items to Batch" DataKeyNames="GroupID">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox runat="server" ID="cbFinalise" AutoPostBack="true" OnCheckedChanged="cbFinalise_OnCheckedChanged" ClientIDMode="Static" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="GroupID" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" DataField="GroupID" />
<asp:BoundField HeaderText="Date" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" DataField="Date" DataFormatString="{0:dd/MM/yyyy}" ItemStyle-Width="100px" />
<asp:BoundField HeaderText="Cashier" HeaderStyle-HorizontalAlign="Left" ItemStyle-HorizontalAlign="Left" DataField="Cashier" ItemStyle-Width="100px" />
脚本:
<script type="text/javascript">
$(function () {
$('tr.gridview_row,tr.gridview_alternatingRow').click(function () {
var checked = $(this).find('input[id*=cbFinalise]').prop('checked');
$(this).find('input[id*=cbFinalise]').prop('checked', !checked);
});
});
</script>
代码隐藏:
public void cbFinalise_OnCheckedChanged(Object sender, EventArgs e)
{
//Calculations
}
jQuery完全是客户端。 OnCheckedChanged
只有在由于单击无线电input
而发生回发后,才会在服务器端触发。试试这个:
$('tr.gridview_row,tr.gridview_alternatingRow').click(function () {
$(this).find('input[id*=cbFinalise]').click(); // this should force a postback
});
请注意,手动更改控件的 checked
属性是多余的,因为无论如何您都会刷新页面,并且控件的状态将由 ASP.Net 在重新呈现页面时设置。
我建议您触发单击复选框以强制回发:
<script type="text/javascript">
$(function () {
$('tr.gridview_row,tr.gridview_alternatingRow').click(function () {
$(this).find('input[id*=cbFinalise]').trigger('click');
});
});
</script>