javascript - 需要asp :TextBox when specific asp:CheckBoxList ListItem checked

标签 javascript c# asp.net webforms forms-authentication

我没有找到任何在选中 CheckBoxList 中的特定复选框时要求填写文本框的示例。我发现了很多独立复选框的例子。我知道 CheckBoxList 是一种独特的动物,没有内置的必需验证器。

我需要用户在选中复选框列表中的“其他”框时填写相关文本框。如果也根据选中的框来显示/隐藏文本框,那就太好了。

最佳答案

当所有其他方法都失败时,创建一个CustomValidator。这样您就可以编写自己的规则来确定一个或多个元素何时有效或无效。不过,为了实现此目的,我将 checkBoxListValidator 类添加到 CheckBoxList 中,以便能够使用 jQuery 找到它。

<asp:CheckBoxList ID="CheckBoxList1" runat="server" CssClass="checkBoxListValidator">
    <asp:ListItem Text="Option A" Value="1"></asp:ListItem>
    <asp:ListItem Text="Option B" Value="2"></asp:ListItem>
    <asp:ListItem Text="Option C" Value="3"></asp:ListItem>
    <asp:ListItem Text="Other" Value="-1"></asp:ListItem>
</asp:CheckBoxList>

<asp:TextBox ID="TextBox1" runat="server" Style="display: none"></asp:TextBox>

<asp:CustomValidator ID="CustomValidator1" runat="server" Text="Please fill out the TextBox" ClientValidationFunction="requiredFieldIfOther"></asp:CustomValidator>

<script type="text/javascript">
    function requiredFieldIfOther(sender, element) {
        var isValid = true;
        var textBoxToValidate = $("#<%= TextBox1.ClientID%>");
        $('.checkBoxListValidator input[type="checkbox"]').each(function () {
            if ($(this).val() == "-1" && $(this).prop("checked") == true && textBoxToValidate.val() == "") {
                isValid = false;
            }
        });
        element.IsValid = isValid;
    }

作为奖励,可以使用基于 other 复选框显示和隐藏文本框的代码。

    $('.checkBoxListValidator input[type="checkbox"]').change(function () {
        var textBoxToValidate = $("#<%= TextBox1.ClientID%>");
        if ($(this).val() == "-1" && $(this).prop("checked") == true) {
            textBoxToValidate.prop("style", "display:block");
        } else {
            textBoxToValidate.prop("style", "display:none");
        }
    });
</script>

关于javascript - 需要asp :TextBox when specific asp:CheckBoxList ListItem checked,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43003859/

相关文章:

Javascript 将字符串作为数学计算,包含 "()"

c# - 算法:分析网页的标签

asp.net - 使用 Visual Studio 2008 远程调试 Web 应用程序的服务器端

asp.net - 带有谷歌地图 api 的 ASP .NET

asp.net - IAppbuilder 不包含用于外部登录的 asp.net 标识中的 "usefacebookauthentication"定义

javascript - 如何修复运行 'cannot find module'错误的Docker容器?

javascript - 为什么Promise先于setTimeout执行?

javascript - 将 ParticleJS 与 Gatsby 结合使用

C# 泛型 IEnumerable

c# - 如何将样式文本转换为类/哈希表/集合等 C# 对象?