使用 jQuery 验证 div 内的所有输入字段

Posted

技术标签:

【中文标题】使用 jQuery 验证 div 内的所有输入字段【英文标题】:Validate all input fields inside a div using jQuery 【发布时间】:2017-11-27 13:56:59 【问题描述】:

我正在使用下面的 jQuery 函数来验证 div 中的所有字段。我的问题是即使我填写了所有字段,它也总是返回 false。

function validate(id) 
            //:text, :checkbox, select, textarea
            var isFormValid = true;
            var div = $(id);
            $(div).find(":text, select").each(function () 
                if (this.value == "" && !$(this).hasClass("no-req")) 
                    $(this).addClass("required");
                    isFormValid = false;
                    $(this).focus();
                
                else 
                    $(this).removeClass("required");
                
            );
            if (!isFormValid) 
                alert("Please fill all the higlighted fields!");
            
            return isFormValid;

        

在 Asp.net 按钮客户端单击我正在使用此代码

 <asp:Button ID="btnSave" runat="server" Text="Save" class="btn btn-success" OnClientClick="javascript: return validate('#tdAdd');"   OnClick="btnSave_Click" />

【问题讨论】:

你试过OnClientClick="validate('#tdAdd');" 该功能似乎工作正常 -> jsfiddle.net/s5rfhsa9/1 请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。 【参考方案1】:

改变这个:

$(div).find(":text, select").each(function () 
    if (this.val() == "" && !$(this).hasClass("no-req")) 

收件人:

div.find(":text, select").each(function () 
    if ($(this).val() == "" && !$(this).hasClass("no-req")) 

【讨论】:

问题标记为 jQuery,这不是 jQuery。 ***.com/questions/4524702/…【参考方案2】:

为什么不使用内置的 aspnet 自定义验证器?然后,您可以搜索特定 div 内的所有 TextBox,并返回 Validator 值。

<div id="validateTheseControls">
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <br />
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
    <br />
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

    <asp:CustomValidator ID="CustomValidator1" runat="server" 
    ClientValidationFunction="validateControlsInDiv" ErrorMessage="Not all fields are filled"></asp:CustomValidator>
</div>

<script type="text/javascript">
    function validateControlsInDiv(sender, element) 
        var isValid = true;

        $('#validateTheseControls input[type="text"]').each(function () 
            if ($(this).val() == "") 
                isValid = false;
            
        );

        element.IsValid = isValid;
    
</script>

【讨论】:

以上是关于使用 jQuery 验证 div 内的所有输入字段的主要内容,如果未能解决你的问题,请参考以下文章

如何使用jQuery在某些特定div中选择具有相同名称的所有元素[重复]

在 jQuery 验证中忽略所有隐藏的 div 但不是一个

Jquery Validate errorPlacement

禁用 div 内的所有表单元素

jquery 验证仅验证第一个字段 - 其他字段被忽略

jquery 序列化 div 内容以发布输入数据