jQuery Validation Plugin을 사용하여 프로그래밍 방식으로 양식이 유효한지 확인하는 방법


93

몇 개의 버튼이있는 양식이 있고 http://jquery.bassistance.de/validate/의 jQuery 유효성 검사 플러그인을 사용하고 있습니다. 내 자바 스크립트 코드의 어느 곳에서나 jquery 유효성 검사 플러그인에 의해 양식이 유효한 상태로 간주되는지 확인할 수있는 방법이 있는지 알고 싶습니다.


2
HTML5 및 바닐라 JS (jQuery 없음)를 사용하려는 경우 : stackoverflow.com/questions/12470622/…
2540625

답변:


142

.valid()jQuery Validation 플러그인에서 사용 :

$("#form_id").valid();

선택한 양식이 유효한지 또는 선택한 모든 요소가 유효한지 확인합니다. 이 메서드를 사용하여 확인하기 전에 폼에서 validate ()를 호출해야합니다.

포함 id='form_id'된 양식은 이미 .validate()호출 한 양식입니다 .


감사합니다. 이미 다음과 같은 작업을하고있었습니다. $ j ( "# myform label.error"). each (function (i, e) {if ($ j (e) .css ( 'display')! = 'none' ) {existErrors = true;}}); : S 감사합니다
Jaime Hablutzel 2011-07-12

@jaime : 없음 문제, 기쁜 도움에:)
앤드류 휘태커

실제로 .validate ()를 먼저 폼에서 실행할 필요가 없습니다. 간단히 if (form.valid ()) {}하면 작동합니다. 여기서 'form'은 대상으로하는 양식 요소입니다.
Gareth Daine 2014 년

11
TypeError : $ ( "# myForm"). valid ()는 함수가 아닙니다.
artgrohe 2010 년

2
받고있는 경우는 TypeError valid() not a function자사가 jQuery 라이브러리의 예에 포함되지 않은 플러그인이 때문에 파일에 플러그인을 추가 할 수 있습니다. <script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script>
StackEdd

33

2015 답변 : 최신 브라우저에서 바로 사용할 수 있습니다 . jQuery 의 HTML5 CheckValidity API 를 사용하면 됩니다. 이 작업을 수행하기 위해 jquery-html5-validity 모듈 도 만들었습니다 .

npm install jquery-html5-validity

그때:

var $ = require('jquery')
require("jquery-html5-validity")($);

그런 다음 다음을 실행할 수 있습니다.

$('.some-class').isValid()

true

1
각 요소가 아닌 전체 형식으로 호출 할 수 있습니까?
parisssss

1
큰! 그냥 내가 찾던 것
Fester

valid함수를 호출하고 validate양식의 유효성을 검사 하지 않기 때문에 함수 보다 이것을 선호합니다 .
KevinAdu

@parisssss 요청에 따라 다중 선택에 대해 모듈을 만들었습니다.
mikemaccana

19

@mikemaccana 답변이 유용합니다.

그리고 https://github.com/ryanseddon/H5F 도 사용했습니다 . http://microjs.com 에서 찾을 수 있습니다 . 일종의 폴리 필이며 다음과 같이 사용할 수 있습니다 (예제에서는 jQuery가 사용됨).

if ( $('form')[0].checkValidity() ) {
    // the form is valid
}

그렇지 트리거 양식 유효성 검사 않기 때문에이 하나 더
Bishoy 한나

패턴 속성으로 작업하십시오. 감사.
MJ Vakili


4

iContribute : 올바른 답변을하기에는 너무 늦지 않았습니다.

var form = $("form#myForm");
if($('form#myForm > :input[required]:visible').val() != ""){
  form.submit();
}else{
  console.log("Required field missing.");
}

이렇게하면 '필수'필드에 대한 기본 HTML5 유효성 검사가 양식의 '이름'값을 사용하는 표준 제출을 방해하지 않고 수행됩니다.


참고 것을 :input:visible셀렉터는 jQuery를 확장하지 CSS의 일부입니다. 문서
Geradlus_RU

3
필수 필드가 누락 된 것이 아니라 패턴 일치로 인해 양식이 유효하지 않을 수도 있습니다
frank

4

입력 그룹의 경우 @mikemaccana의 답변을 기반으로 한 개선 된 버전을 사용할 수 있습니다.

$.fn.isValid = function(){
    var validate = true;
    this.each(function(){
        if(this.checkValidity()==false){
            validate = false;
        }
    });
};

이제 이것을 사용하여 양식이 유효한지 확인할 수 있습니다.

if(!$(".form-control").isValid){
    return;
}

동일한 기술을 사용하여 모든 오류 메시지를 얻을 수 있습니다.

$.fn.getVelidationMessage = function(){
    var message = "";
    var name = "";
    this.each(function(){
        if(this.checkValidity()==false){
            name = ($( "label[for=" + this.id + "] ").html() || this.placeholder || this.name || this.id);
            message = message + name +":"+ (this.validationMessage || 'Invalid value.')+"\n<br>";
        }
    })
    return message;
}

나는 당신을 위해 .each ()를 수행하기 위해 jQuery 플러그인을 만들었습니다.
mikemaccana

1

Magento의 경우 아래와 같이 양식 유효성 검사를 확인합니다.

이것을 시도 할 수 있습니다.

require(["jquery"], function ($) {
    $(document).ready(function () {
        $('#my-button-name').click(function () { // The button type should be "button" and not submit
            if ($('#form-name').valid()) {
                alert("Validation pass");
                return false;
            }else{
                alert("Validation failed");
                return false;
            }
        });
    });
});

이것이 당신을 도울 수 있기를 바랍니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.