最後から 2 番目の列に Textbox (jQueryUI DatePicker ウィジェットで埋められる) と RadioButtonList が含まれる GridView があります。また、最後の列にはチェックの画像があります (stackoverflow の「回答済み」および「未回答」チェックに似ています)。
私が必要とするのは、できれば Javascript を使用して、ユーザーがテキスト ボックスの値を何か (私の場合は日付) に変更し、ラジオ ボタンを選択してから、画像ソースを空のチェックマークから色付きのチェックマーク (繰り返しますが、stackoverflow の回答チェックに似ています)。また、ユーザーがテキスト ボックスからすべてのテキストを削除した場合は、画像ソースを空のチェックマークに戻す必要があります。ああ、画像の代替テキストも変更する必要があります。
マイ グリッドビュー
<asp:GridView ID="gvBlah" runat="server" AutoGenerateColumns="false">
<Columns>
...
<asp:TemplateField>
<HeaderTemplate>
<asp:Label ID="warrantyDateHeader" Text="Warranty Date" ToolTip="Choose a date..." runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:TextBox ID="txtWarrantyDate" runat="server" CssClass="datepicker" />
<asp:RadioButtonList ID="rblWarrantyDate" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Value="0" Text="Start" />
<asp:ListItem Value="1" Text="End" />
</asp:RadioButtonList>
</ItemTemplate>
<ItemStyle VerticalAlign="Top" HorizontalAlign="Center" />
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Image ID="imgRowChecked" ImageUrl="~/images/check-empty.png" AlternateText="Not Selected" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
アップデート
与えられた答えを使用して、これが最良の解決策になりました。
var dateStatus = 0 // global variable
var WarrantyStatus = 0 // global variable
$(".datepicker").change(function () {
if ($(this).val().length == 0) {
dateStatus = 0;
$(".chkSerialNumber").removeClass("check-filled").addClass("check-empty");
}
else {
dateStatus = 1;
if (WarrantyStatus > 0) {
$(".chkSerialNumber").addClass("check-filled").removeClass("check-empty");
}
}
});
$(".rbl").change(function () {
WarrantyStatus = 1;
if (dateStatus = 1) {
$(".chkSerialNumber").addClass("check-filled").removeClass("check-empty");
}
});