【发布时间】:2017-12-15 19:57:26
【问题描述】:
我查看了大量关于如何在 gridview 中验证复选框的示例,但到目前为止似乎没有一个对我有用。
我在 gridview 外面有这个带有复选框的代码:
<table>
<tr>
<td>
<asp:CheckBox ID="grid1Details" ClientIDMode="Static" runat="server" Checked="false" AutoPostBack="true" OnCheckedChanged="Grid1CheckChanged" /><span style="color:#ff0000">*</span>
</td>
<td>
<asp:gridview ID="Gridview1" gridlines="None" runat="server" ShowFooter="true" AutoGenerateColumns="false" onrowdatabound="Gridview1_RowDataBound" OnRowDeleting="Gridview1_RowDeleting">
<Columns>
<asp:BoundField DataField="RowNumber" Visible="false" HeaderText="Row Number" />
<asp:TemplateField HeaderText="Name">
<headerstyle horizontalalign="Left" />
<ItemTemplate>
<asp:TextBox ID="txtsourcename" placeholder="Name...(e.g, Jane Doe)" runat="server" style="width:250px;" class="form-control"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Address">
<ItemStyle HorizontalAlign="Left"></ItemStyle>
<ItemTemplate>
<asp:TextBox ID="txtsourceaddress" placeholder="Address..." runat="server" style="width:250px;" class="form-control"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Income">
<ItemStyle HorizontalAlign="Left"></ItemStyle>
<ItemTemplate>
<asp:TextBox ID="txtsourceincome" placeholder="Income...(example: 1000)" runat="server" style="width:250px;" class="form-control txtsourceincome numeric"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:Button ID="ButtonAdd" runat="server" Text="Add"
onclick="ButtonAdd_Click" CssClass="grvAddButton" OnClientClick="return ValidateEmptyValue();return validate()" />
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True"><ControlStyle CssClass="grvDelButton" /></asp:CommandField>
</Columns>
</asp:gridview>
</td>
</tr>
//JS:
<script type="text/javascript">
function validate() {
//employee check
var checkbox = document.getElementById("<%=grid1Details.ClientID %>");
var txtsourcename = $("[id*='txtsourcename']")[0];
var txtsourceaddress = $("[id*='txtsourceaddress']")[0];
var txtsourceincome = $("[id*='txtsourceincome']")[0];
if (checkbox.checked) {
if ($(txtsourcename).val().length != 0 && $(txtsourceaddress).val().length != 0 && $(txtsourceincome).val().length != 0) {
Alert("Please enter values on all textboxes or check the checkbox next to each textbox.");
return false;
} else {
return true;
}
} else {
if ($(txtsourcename).val().length != 0 && $(txtsourceaddress).val().length != 0 && $(txtsourceincome).val().length != 0) {
return true;
} else {
Alert("Please enter values on all textboxes or check the checkbox next to each textbox.");
return false;
}
}
}
</script>
用户需要在 GridView1 内的文本框中输入值。
如果用户选择将文本框留空,她/他必须在复选框中打勾才能继续。
在管理层决定将复选框移动到 gridview 中并将其放在名称...文本框下方之前,这一直很好用。
我很难验证这一点。
对 javascript 进行以下更改:
var checkbox = document.getElementById("grid1Details");
var txtsourcename = $("[id*='txtsourcename']")[0];
var txtsourceaddress = $("[id*='txtsourceaddress']")[0];
var txtsourceincome = $("[id*='txtsourceincome']")[0];
验证不再有效。无论您是否勾选复选框,即使文本框为空白,只要单击提交按钮,就会提交数据。
任何想法我做错了什么?
上面的屏幕截图显示了两个图像,图像 1,它过去的样子和图像 2,管理层希望它看起来的样子。
【问题讨论】:
标签: javascript jquery asp.net vb.net