4

我有以下内容:

$("#pmtForm").validate({
            rules: {
                    acct_name: "required",                        
                    acct_type: "required",  
                    acct_routing:  { 
                                     required: true,    
                                     digits: true,
                                     exactLength:9
                                     }, 
                    acct_num:      { 
                                     required: true,    
                                     digits: true
                                     }, 
                    c_acct_routing:{ 
                                     equalTo: '#acct_routing'
                                     },     
                    c_acct_num:    { 
                                     equalTo: '#acct_routing'
                                     }      
            },
            messages: {
                    acct_name: "<li>Please enter an account name.</li>",
                    acct_type: "<li>Please choose an account type.</li>",
                    acct_routing: "<li>Please enter a routing number.</li>",
                    acct_num: "<li>Please enter an account number.</li>",
                    c_acct_routing: "<li>Please confirm the routing number.</li>",
                    c_acct_num: "<li>Please confirm the account number.</li>"
            },

        //  errorContainer: '#div.error',

            errorPlacement: function(error, element) {
                $('#errorList').html("");
                $('#errorList').append(error);
                $('div.error').attr("style","display:block;");  
            } 
        });

我正在尝试将错误消息插入到表单上方的 div 中。我的问题是如果我删除这一行: $('#errorList').html(""); 然后它第一次正确显示错误消息。如果我再次点击提交,它会将另一组消息附加到 div。如果我保留 $('#errorList').html(""); 那么我只会收到一条错误消息。

  • 请输入帐号。
  • 如何刷新 errorList 使其不会重复并正确显示错误消息?

    提前致谢。

    4

    4 回答 4

    2

    我认为您所追求的是更合适的errorContainer,errorLabelContainerwrapperoptions,如下所示:

    $("#pmtForm").validate({
            rules: { ... },
            messages: { ... },
            errorContainer: '#errorList',
            errorLabelContainer: "#errorList ul",
            wrapper: 'li'
    });
    

    您现在可以<li></li>从错误消息中删除包装,这将包装它们,然后放在 中,并在没有错误时<div id="#errorList"><ul></ul></div>隐藏:)<div>

    于 2010-05-28T17:43:42.087 回答
    2

    jQuery 验证将为您控制错误消息的状态。也就是说,您不必使用:

    $('#errorList').html("");
    

    控制错误容器的状态。在这种情况下,您应该可以使用:

    errorContainer: '#div.error'
    

    errorPlacement 更旨在允许您将错误消息附加到非常特定的容器(即:为错误消息保留的 TR 中的最后一个 TD)。

    如果您使用 FireBug 类似的工具,您会看到 jQuery Validation 会将错误消息附加到您的错误容器中,并根据表单元素是否通过其规则来控制其可见性。

    此外,您不需要将错误消息包装在 HTML 中,您可以使用:

    wrapper: "li"
    
    于 2010-05-28T17:43:54.053 回答
    1

    这有效:

      $("#addPmtAcctForm").validate({
                rules: {
                        acct_name: "required",                        
                        acct_type: "required",  
                        acct_routing:  { 
                                         required: true,    
                                         digits: true,
                                         exactLength:9
                                         }, 
                        acct_num:      { 
                                         required: true,    
                                         digits: true
                                         }, 
                        c_acct_routing:{ 
                                         equalTo: '#acct_routing'
                                         },     
                        c_acct_num:    { 
                                         equalTo: '#acct_num'
                                         }      
                },
                messages: {
                        acct_name: "<li>Please enter an account name.</li>",
                        acct_type: "<li>Please choose an account type.</li>",
                        acct_routing: "<li>Please enter a routing number.</li>",
                        acct_num: "<li>Please enter an account number.</li>",
                        c_acct_routing: "<li>Please confirm the routing number.</li>",
                        c_acct_num: "<li>Please confirm the account number.</li>"
                },
    
                errorLabelContainer: $("ul", $('div.error')), wrapper: 'li',
    
                errorContainer: $('div.error'),
    
                errorPlacement: function(error, element) {
                    $('#errorList').append(error);
                } 
            }); 
    
    于 2010-05-28T17:56:37.883 回答
    1

    我认为您只需将其添加到您的验证方法中 errorContainer: errorList errorLabelContainer: $("ol", container), wrapper: 'li',

    试试看,看看...

    于 2010-05-28T17:44:33.740 回答