0

我在我的表单中使用验证器插件。我有 3 组单选按钮和 1 组复选框。我正在为收音机和复选框使用错误放置,这样如果发生错误,它将错误类放在特定错误元素旁边。

        errorElement: "div",
        wrapper: "div",  // a wrapper around the error message
        errorPlacement: function(error, element) {
            if(element.is(":radio")){
                error.insertAfter('ul.radio');
                error.addClass('error_class');
            }else if(element.is(":checkbox")){
                error.insertAfter('ul.checkbox');
                error.addClass('error_class');
            } else{
                error.insertAfter(element);
                error.addClass('error_class');
            }
        },

如果我有单个复选框和无线电组,但如果我有 3 个无线电组并且这会在每个具有无线电类的无线电组旁边生成 3 个错误集,则它工作正常。像这样...

我的下一个 CSS 是这样的......

<div class="sgnup-cnt-inpt1">
                    <h3>Type of Classes *</h3>
                    <ul class="lst1 radio">
                        <li>
                            <span><input type="radio" class="required error" value="Academic" id="type_of_class_a" name="type_of_class"></span>
                            <label>Academic</label>
                        </li><li>
                            <span><input type="radio" class="required error" value="Non-Academic" id="type_of_class_n" name="type_of_class"></span>
                            <label> Non-academic</label>
                        </li>
                    </ul>
<div><div htmlfor="teaching_exp" generated="true" class="error" style="display: block;">Required.</div></div>
<div><div htmlfor="type_of_class" generated="true" class="error" style="display: block;">Required.</div></div>
<div><div htmlfor="gender" generated="true" class="error" style="display: block;">Required.</div></div><div style="display: none;"><div htmlfor="type_of_class_insti" generated="true" class="error" style="display: none;">Required.</div></div>
                    <div id="radio"></div>
                </div>

注意我不希望在每种情况下都使用 if else 无线电的错误放置。我想在全球范围内使用:radio. 我不想将它与名称和其他属性进行比较。

4

1 回答 1

1

您在ul具有指定类的每个元素之后插入发生的错误,而不仅仅是对应的。尝试:

errorPlacement: function(error, element) {
    if(element.is(":radio")){
        error.insertAfter(element.closest('ul.radio'));
        error.addClass('error_class');
    } else if(element.is(":checkbox")){
        error.insertAfter(element.closest('ul.checkbox'));
        error.addClass('error_class');
    } else {
        error.insertAfter(element);
        error.addClass('error_class');
    }
},

所以错误只会附加到ul与错误元素相关的元素上。

于 2013-02-25T10:27:41.127 回答