如何在勾选复选框时使项目成为必填项
how to make items required when checkbox is ticked?
我正在尝试设置一个文本框,如果勾选了复选框,则需要下拉列表和带有日期选择器的文本框。所以,如果没有勾选复选框,则不需要字段,但如果勾选了,则需要所有字段。
<table>
<tbody>
<tr>
<td class="Header">Haz Trained?</td>
<td></td>
<td>
<asp:CheckBox runat="server" ID="chkHazTrained" OnClick="updateValidator();"/>
</td>
</tr>
<tr>
<td class="Header">Haz License No</td>
<td></td>
<td>
<asp:TextBox runat="server" ID="txtHazLicenseNo"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvHazLicenseNo" ControlToValidate="txtHazLicenseNo" ErrorMessage="You must enter a License No." runat="server" />
</td>
</tr>
<tr>
<td class="Header">License Type</td>
<td></td>
<td>
<asp:DropDownList runat="server" ID="ddlHazLicenseType">
</asp:DropDownList>
</td>
</tr>
<tr>
<td class="Header">Expiry Date
</td>
<td></td>
<td>
<asp:TextBox runat="server" ID="txtHazLicenseExpiryDate" rel="datepicker" CssClass="dateonly"></asp:TextBox>
</td>
</tr>
</tbody>
</table>
我试着创建一个javascript函数,但它不能正常工作。即使没有勾选复选框,它也会要求填写文本框。如果未勾选复选框,则不需要其他字段。那么我该如何解决这个问题呢?
function updateValidator() {
var enableValidator = !event.srcElement.status;
var rfvHazLicenseNo = document.getElementById('rfvHazLicenceNo');
ValidatorEnable(rfvHazLicenseNo, enableValidator);
}
尝试过的客户验证程序:
<asp:TextBox runat="server" ID="txtHazLicenseNo" Text=""></asp:TextBox>
<asp:CustomValidator id="CustomValidator2" runat="server"
ControlToValidate = "txtHazLicenseNo"
ErrorMessage = "Please enter"
ClientValidationFunction="validateHazLicence" >
</asp:CustomValidator>
function validateHazLicence(oSrc, args){
if(chkHazTrained.checked == true)
{
args.IsValid = (args.Value.length > 0);
}
}
但当复选框被勾选时,它并不会使文本框成为必需的。
我相信您想要使用自定义验证器。因此,如果chkHazTrained,则文本框/ddl将有效。Checked==false,或者如果ChkHazTrained。选中==true,并且文本框/ddl有一个值。
我想你可以使用RequiredFieldValidators并更新它们来让它工作。Checkbox的CheckedChanged事件的Enabled属性,但这需要您的复选框回发。
复选框中的单击事件是服务器端事件的引用,而javascript则需要客户端版本。为此,您可以使用onclick和要调用的函数在服务器端添加一个属性。但我建议使用jquery并添加一个点击事件。以下是将单击事件添加到元素的链接https://api.jquery.com/click/
在javascript函数中,您需要启用类似以下的验证器
ValidatorEnable(ValBano, true);
验证变量是否正在发送字符串,以及这是否会导致问题。另外,您需要在javascript中进行检查的是,框架不会更改复选框或其他元素的名称。
例如,使用此选项可以获得验证控件和/或复选框的正确名称。如果您没有使用不更改名称的配置,请始终将其用于服务器端控件。
var ValBano = document.getElementById('<%=vreqBanos.ClientID %>');
此外,我建议使用jquery来读取例如复选框中的值,这样更容易并且跨浏览器兼容。
这里有一些代码使用jquery来检查是否选中了复选框:
$('#chkAddEducacion3').click(function () {
if ($('#chkAddEducacion3').is(':checked')) {
''get the validator
var ValBano = document.getElementById('<%=vreqBanos.ClientID %>');
''enable the validtor
ValidatorEnable(ValBano, true);
}
else
{
''get the validator
var ValBano = document.getElementById('<%=vreqBanos.ClientID %>');
''disable the validtor
ValidatorEnable(ValBano, false);
}
});
- 动态选中文本区域中现有项目的复选框组
- Angularjs - 复选框 - 计算多个选定/未选定项目
- 使用 JQuery 复选框筛选项目列表
- 我正试图获得一个带有复选框的多选下拉列表,在填充项目和获得所有选中的工作时遇到了一些问题
- 如果选择了某个项目,将显示Getting复选框
- 如何使复选框项目返回超链接
- 在复选框取消选中事件中从HTML下拉列表中删除项目
- 购物清单应用程序:使用复选框划掉项目
- 项目的复选框列表的总和
- 使用jQuery从复选框列表中获取所选项目
- 选中RadListView项目模板-客户端中的RadButton复选框
- AngularJs:删除项目后取消选中复选框
- 谁能告诉我如何使用 JavaScript 选择从数据库获取的所有项目到复选框中
- AngularJS指令,用于检查复选框列表中是否至少选中了一个项目
- 在 jQuery 中选中复选框时,如何将项目添加到列表中
- extjs 3.4使用combo store创建复选框组项目
- Extjs使用复选框模型在网格上拖放单个项目
- 如何提交选中的复选框项目
- Ember循环遍历一组复选框并获取选中的项目
- jQuery(移动):获取所有选中的项目(复选框)