javascript - 勾选复选框时如何制作必需的项目?

标签 javascript c# asp.net visual-studio

如果勾选了复选框,我正在尝试将文本框、下拉列表和带有日期选择器的文本框设置为必需。因此,如果未勾选复选框,则不需要字段,但如果勾选,则所有字段都是必需的。

<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);
        }
    }

但是当勾选复选框时,它不会使文本框成为必需的。

最佳答案

I believe you want to use a custom validator.因此,如果 chkHazTrained.Checked == false,或者如果 ChkHazTrained.Checked == true 并且文本框/ddl 具有值,则文本框/ddl 将有效。

我想您可以使用 RequiredFieldValidators 并在 Checkbox 的 CheckedChanged 事件上更新它们的 .Enabled 属性来让它工作,但这也需要您的复选框回发。

关于javascript - 勾选复选框时如何制作必需的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31075056/

相关文章:

c# - 如何解决无法连接到 SQL Server 数据库?

javascript - 未捕获的类型错误 : Cannot read property 'enqueueSetState' of undefined at Component. setState

javascript - 如何通过单击按钮更改所有段落(而不是标题)的颜色?

asp.net - 如何使用 ASP.NET 制作一个非常简单的 Web 代理?

c# - dnxcore50 可以引用针对 .net4.5 编译的 nuget 包吗

c# - 当 mp3 列出艺术家时,TagLib Sharp 返回空白艺术家

javascript - 通过 ASP.net 在 javascript 中发出警报日期

javascript - 有没有办法在指令中获取类宽度?

javascript - SweetAlert 文本格式

c# - ASP.NET MVC : 'Extend' Html. TextBox 有条件地具有 CSS 值?