[twitter-bootstrap] jQuery 유효성 검사 플러그인이있는 부트 스트랩

jQuery Validation Plugin을 사용하여 양식에 유효성 검사를 추가하려고하는데 입력 그룹을 사용할 때 플러그인에서 오류 메시지를 표시하는 데 문제가 있습니다.

문제

$('form').validate({
    rules: {
        firstname: {
            minlength: 3,
            maxlength: 15,
            required: true
        },
        lastname: {
            minlength: 3,
            maxlength: 15,
            required: true
        }
    },
    highlight: function(element) {
        $(element).closest('.form-group').addClass('has-error');
    },
    unhighlight: function(element) {
        $(element).closest('.form-group').removeClass('has-error');
    }
});

내 코드 : http://jsfiddle.net/hTPY7/4/



답변

트위터 부트 스트랩 3과의 완벽한 호환성을 위해 일부 플러그인 메소드를 재정의해야합니다.

// override jquery validate plugin defaults
$.validator.setDefaults({
    highlight: function(element) {
        $(element).closest('.form-group').addClass('has-error');
    },
    unhighlight: function(element) {
        $(element).closest('.form-group').removeClass('has-error');
    },
    errorElement: 'span',
    errorClass: 'help-block',
    errorPlacement: function(error, element) {
        if(element.parent('.input-group').length) {
            error.insertAfter(element.parent());
        } else {
            error.insertAfter(element);
        }
    }
});

예를 참조하십시오 : http://jsfiddle.net/mapb_1990/hTPY7/7/


답변

Bootstrap 3과의 완벽한 호환성을 위해 다른 솔루션에서 누락 된 input-group , radiocheckbox 지원을 추가했습니다 .

2017 년 10 월 20 일 업데이트 : 다른 답변에 대한 제안을 검사하고 라디오 인라인 의 특수 마크 업에 대한 추가 지원 , 라디오 또는 확인란 그룹에 대한 오류 배치 개선 및 사용자 지정 .novalidation 지원 추가 컨트롤의 유효성 검사를 방지하기 위해 클래스에 . 이것이 도움이되기를 바랍니다. 제안에 감사드립니다.

유효성 검사 플러그인을 포함시킨 후 다음 호출을 추가하십시오.

$.validator.setDefaults({
    errorElement: "span",
    errorClass: "help-block",
    highlight: function (element, errorClass, validClass) {
        // Only validation controls
        if (!$(element).hasClass('novalidation')) {
            $(element).closest('.form-group').removeClass('has-success').addClass('has-error');
        }
    },
    unhighlight: function (element, errorClass, validClass) {
        // Only validation controls
        if (!$(element).hasClass('novalidation')) {
            $(element).closest('.form-group').removeClass('has-error').addClass('has-success');
        }
    },
    errorPlacement: function (error, element) {
        if (element.parent('.input-group').length) {
            error.insertAfter(element.parent());
        }
        else if (element.prop('type') === 'radio' && element.parent('.radio-inline').length) {
            error.insertAfter(element.parent().parent());
        }
        else if (element.prop('type') === 'checkbox' || element.prop('type') === 'radio') {
            error.appendTo(element.parent().parent());
        }
        else {
            error.insertAfter(element);
        }
    }
});

이것은 모든 Bootstrap 3 폼 클래스에서 작동합니다. 가로 형식을 사용하는 경우 다음 마크 업을 사용해야합니다. 이렇게하면 도움말 차단 텍스트가 form-group 의 유효성 검사 상태 ( “has-error”, …)를 준수 합니다.

<div class="form-group">
    <div class="col-lg-12">
        <div class="checkbox">
            <label id="LabelConfirm" for="CheckBoxConfirm">
                <input type="checkbox" name="CheckBoxConfirm" id="CheckBoxConfirm" required="required" />
                I have read all the information
            </label>
        </div>
    </div>
</div>


답변

Twitter Bootstrap 3으로 만 설계된 양식을 사용합니다. 유효성 검사기의 기본 기능을 설정하고 규칙을 사용하여 유효성 검사 방법 만 실행합니다. FontAweSome의 Icons를 사용하지만 문서 예제에서와 같이 Glyphicon을 사용할 수 있습니다.

여기에 이미지 설명을 입력하십시오

jQuery.validator.setDefaults({
    highlight: function (element, errorClass, validClass) {
        if (element.type === "radio") {
            this.findByName(element.name).addClass(errorClass).removeClass(validClass);
        } else {
            $(element).closest('.form-group').removeClass('has-success has-feedback').addClass('has-error has-feedback');
            $(element).closest('.form-group').find('i.fa').remove();
            $(element).closest('.form-group').append('<i class="fa fa-exclamation fa-lg form-control-feedback"></i>');
        }
    },
    unhighlight: function (element, errorClass, validClass) {
        if (element.type === "radio") {
            this.findByName(element.name).removeClass(errorClass).addClass(validClass);
        } else {
            $(element).closest('.form-group').removeClass('has-error has-feedback').addClass('has-success has-feedback');
            $(element).closest('.form-group').find('i.fa').remove();
            $(element).closest('.form-group').append('<i class="fa fa-check fa-lg form-control-feedback"></i>');
        }
    }
});

끝난. 유효성 검사 기능을 실행 한 후 :

$("#default-register-user").validate({
    rules: {
        'login': {
            required: true,
            minlength: 5,
            maxlength: 20
        },
        'email': {
            required: true,
            email: true,
            minlength: 5,
            maxlength: 100
        },
        'password': {
            required: true,
            minlength: 6,
            maxlength: 25
        },
        'confirmpassword': {
            required: true,
            minlength: 5,
            maxlength: 25,
            equalTo: "#password"
        }
    }
});

JSFiddle 예제


답변

위의 Miguel Borges 답변에 추가하면 강조 표시 / 강조 표시 해제 코드 블록에 다음 줄을 추가하여 녹색 성공 피드백을 사용자에게 제공 할 수 있습니다.

    highlight: function(element) {
        $(element).closest('.form-group').removeClass('has-success').addClass('has-error');
    },
    unhighlight: function(element) {
        $(element).closest('.form-group').removeClass('has-error').addClass('has-success');
    }


답변

이것은 필요한 솔루션입니다. errorPlacement메서드를 사용 하여 오류 메시지를 넣을 위치를 재정 의 할 수 있습니다

$('form').validate({
    rules: {
        firstname: {
            minlength: 3,
            maxlength: 15,
            required: true
        },
        lastname: {
            minlength: 3,
            maxlength: 15,
            required: true
        }
    },
    errorPlacement: function(error, element) {
        error.insertAfter('.form-group'); //So i putted it after the .form-group so it will not include to your append/prepend group.
    },
    highlight: function(element) {
        $(element).closest('.form-group').addClass('has-error');
    },
    unhighlight: function(element) {
        $(element).closest('.form-group').removeClass('has-error');
    }
});

그것은 마술처럼 나를 위해 작동합니다. 건배


답변

부트 스트랩 4의 경우이 작업은 좋았습니다.

    $.validator.setDefaults({
    highlight: function(element) {
        $(element).closest('.form-group').find(".form-control:first").addClass('is-invalid');
    },
    unhighlight: function(element) {
        $(element).closest('.form-group').find(".form-control:first").removeClass('is-invalid');
        $(element).closest('.form-group').find(".form-control:first").addClass('is-valid');

    },
    errorElement: 'span',
    errorClass: 'invalid-feedback',
    errorPlacement: function(error, element) {
        if(element.parent('.input-group').length) {
            error.insertAfter(element.parent());
        } else {
            error.insertAfter(element);
        }
    }
});

그것이 도움이되기를 바랍니다!


답변

양식에 유효성 검사를 추가 할 때 사용하는 내용은 다음과 같습니다.

// Adding validation to form.
        $(form).validate({
            rules: {
                title: {
                    required: true,
                    minlength: 3,
                },
                server: {
                    ipAddress: true,
                    required: true
                }
            },
            highlight: function(element) {
                $(element).closest('.form-group').removeClass('has-success').addClass('has-error');
            },
            success: function(element) {
                $(element).closest('.form-group').removeClass('has-error').addClass('has-success');
            },
            errorClass: 'help-block'
        });

이것은 jquery 유효성 검사 라이브러리를 사용할 때 Bootstrap 3 스타일링에 효과적이었습니다.