jQuery 유효성 검사 : 기본 오류 메시지 변경


363

jQuery 유효성 검사 플러그인 에서 기본 오류 값을 변경하는 간단한 방법이 있습니까?

오류 메시지를 내 앱에보다 개인적으로 다시 작성하고 싶습니다. 필드가 많으므로 필드 x에 대해 개별적으로 메시지를 설정하고 싶지 않습니다.

답변:


732

유효성 검사 플러그인 뒤에 포함 된 별도의 파일 / 스크립트에이 코드를 추가 하여 메시지를 무시하고 마음대로 편집하십시오. :)

jQuery.extend(jQuery.validator.messages, {
    required: "This field is required.",
    remote: "Please fix this field.",
    email: "Please enter a valid email address.",
    url: "Please enter a valid URL.",
    date: "Please enter a valid date.",
    dateISO: "Please enter a valid date (ISO).",
    number: "Please enter a valid number.",
    digits: "Please enter only digits.",
    creditcard: "Please enter a valid credit card number.",
    equalTo: "Please enter the same value again.",
    accept: "Please enter a value with a valid extension.",
    maxlength: jQuery.validator.format("Please enter no more than {0} characters."),
    minlength: jQuery.validator.format("Please enter at least {0} characters."),
    rangelength: jQuery.validator.format("Please enter a value between {0} and {1} characters long."),
    range: jQuery.validator.format("Please enter a value between {0} and {1}."),
    max: jQuery.validator.format("Please enter a value less than or equal to {0}."),
    min: jQuery.validator.format("Please enter a value greater than or equal to {0}.")
});

31
잘 했어. 방금 추가 한 내용 : $ .extend ($. validator.messages, {필수 : "필수"});
라비 램

6
나는 이것을 다국어 양식에 대한 빠른 수정으로 사용했다 : if ($ ( 'body'). attr ( 'lang') == "es") {jQuery.extend ...};
Heraldmonkey

5
@NickCraver, 나는이 질문으로 너무 많은 투표를 생성하지 않을 것이라고 말하고 싶었습니다 ... 그리고 적시에 신속하게 답변했습니다!
Kevin Brown

3
죄송합니다. 메시지가 표시되지 않습니다. 최소 길이를 사용했지만 필요한 메시지 만 표시됩니다.
Pratik

2
오류 메시지에 양식 요소 이름을 포함시킬 수 있습니까? 일반적인 메시지 대신. 즉 , 이 필드 대신 로그인 필드가 필요 합니다
Musaddiq Khan

239

확인 통화에서 자신의 메시지를 지정할 수 있습니다. Validation 플러그인 문서 ( http://jquery.bassistance.de/validate/demo/milk/ )에 사용 된 Remember the Milk 가입 양식에서이 코드를 해제하고 축약 하여 자신 만의 메시지를 쉽게 지정할 수 있습니다.

var validator = $("#signupform").validate({
    rules: {
        firstname: "required",
        lastname: "required",
        username: {
            required: true,
            minlength: 2,
            remote: "users.php"
        }
    },
    messages: {
        firstname: "Enter your firstname",
        lastname: "Enter your lastname",
        username: {
            required: "Enter a username",
            minlength: jQuery.format("Enter at least {0} characters"),
            remote: jQuery.format("{0} is already in use")
        }
    }
});

validate (...)에 대한 완전한 API : http://jqueryvalidation.org/validate


7
입력 해 주셔서 감사하지만 질문을 자세히 읽으면 기본값을 변경하는 방법을 묻습니다. 고유 한 메시지를 지정할 수 있다는 것을 알고 있습니다.
Kevin Brown

41
그냥 피칭-질문의 대상이 아니더라도 나에게 도움이되었습니다.
Brien Malone

1
그래, 이것은 실제로 기본값을 변경하는 것보다 더 나은 아이디어처럼 보이지만 OP가 원래 요청한 것이지만
Roger

2
@LisaCerilli 나는 동일하게 변경 jQuery.format("...하여 다음과 같이 수정했습니다.jQuery.validator.format("...
lehel

1
나는 이것이 오래된 것을 알고 있지만 첫 번째 링크가 끊어졌습니다.
akousmata

87

이것은 나를 위해 일했다 :

$.validator.messages.required = 'required';

$ .validator.messages.maxlength = jQuery.validator.format ( "{0}자를 초과하지 마십시오."); 작동하지 않습니다. 대신 Nick Cravers 솔루션을 사용하여 제안합니다.
Vidar Vestnes

1
@VidarVestnes이 솔루션은 시나리오에도 적용됩니다. 형식 문자열 만 지정하면 플러그인이 나머지를 수행합니다.$.validator.messages.maxlength = "Please enter no more than {0} characters.";
rusmus

48

이것은 나를 위해 일했다 :

// Change default JQuery validation Messages.
$("#addnewcadidateform").validate({
        rules: {
            firstname: "required",
            lastname: "required",
            email: "required email",
        },
        messages: {
            firstname: "Enter your First Name",
            lastname: "Enter your Last Name",
            email: {
                required: "Enter your Email",
                email: "Please enter a valid email address.",
            }
        }
    })

이 답변이 jqueryValidation에 대한 것이며 jqueryFileUpload가 아닌 경우에도 함수에 messages옵션이 $().fileupload있습니다.
Xavier Portebois

39

이미 JQuery를 사용하고 있으므로 페이지 디자이너가 코드가 아닌 마크 업에 사용자 정의 메시지를 추가 할 수 있습니다.

<input ... data-msg-required="my message" ...

또는 모든 필드에서 하나의 짧은 data-msg 속성을 사용하는보다 일반적인 솔루션입니다.

<form id="form1">
    <input type="text" id="firstName" name="firstName" 
        data-msg="Please enter your first name" />
    <br />
    <input type="text" id="lastName" name="lastName" 
        data-msg="Please enter your last name" />
    <br />
    <input type="submit" />
</form>

그리고 코드에는 다음과 같은 내용이 포함됩니다.

function getMsg(selector) {
    return $(selector).attr('data-msg');
}

$('#form1').validate({
    // ...
    messages: {
        firstName: getMsg('#firstName'),
        lastName: getMsg('#lastName')
    }
    // ...
});

이것은 js 파일에없는 동적 메시지 세트가 필요한 경우 특히 훌륭한 전략입니다.
Charles Harmon

@ user1207577, 예, 사용자 정의 메시지를 설정할 수 있지만 최소 길이 및 최대 길이 메시지를 표시하는 방법은 무엇입니까? 우리가 사용자 정의를 설정하면 최소 및 최대 메시지가 표시되지 않습니다.
나렌 베르 마

22

다른 가능한 해결책은 각 필드에 동일한 오류 메시지를 추가하여 필드를 반복하는 것입니다.

$('.required').each(function(index) {
  $(this).rules("add", {
    messages: {
      required: "Custom error message."
   }
  });
});

1
이 솔루션은 내가 찾던 것입니다 ... 내 시나리오에서 모든 양식 필드에는 레이블이 있으므로 해당 레이블을 찾아 메시지 앞에 추가하여 결국 "이름이 필요합니다."라고 표시합니다. 간스케
tjans

1
+1 다른 모든 대답은 유효하지만 이것이 내가 찾은 구문입니다.
scott.korin

6

플러그인 소스 코드를 변경하는 대신 다운로드 현지화 폴더에있는 것과 같은 형식으로 추가 js 파일을 포함하고 validation.js를로드 한 후 해당 파일을 포함 할 수 있습니다.

jQuery.extend(jQuery.validator.messages, {
    required: ...,
    maxlength: jQuery.validator.format(...),
    ...
});

그렇지 않습니다. 기술적으로 귀하의 답변과 동일합니다. 이전 버전의 답변에 의견을 게시했습니다. 그런 다음 내 자신의 답변을 썼습니다. 계속해서 페이지를 다시로드하지 않아도됩니다. 따라서 귀하의 의견을 확인할 때 귀하가 답변을 편집 한 것만 보았습니다
jitter

5

@Josh : 리소스 번들에서 번역 된 메시지로 솔루션을 확장 할 수 있습니다

<script type="text/javascript">
    $.validator.messages.number = '@Html.Raw(@Resources.General.ErrorMessageNotANumber)';
</script>

이 코드 부분을 _Layout.cshtml (MVC)에 넣으면 모든 뷰에서 사용할 수 있습니다


4

나는 이것이 너무 쉽다고 생각하지 않았으며, 그러한 유효성 검사를 처리하는 프로젝트를 진행하고있었습니다.

아래 답변은 많은 노력없이 유효성 검사 메시지를 변경하려는 사람에게 큰 도움이 될 것입니다.

아래 접근 방식은 "This Field"대신 "Placeholder name"을 사용합니다.

당신은 쉽게 물건을 수정할 수 있습니다

   // Jquery Validation   
   $('.js-validation').each(function(){

       //Validation Error Messages 

       var validationObjectArray = [];

       var validationMessages = {};

       $(this).find('input,select').each(function(){  // add more type hear

          var singleElementMessages = {};

          var fieldName = $(this).attr('name');

          if(!fieldName){  //field Name is not defined continue ;
              return true;
          }


          // If attr data-error-field-name is given give it a priority , and then to placeholder and lastly a simple text

          var fieldPlaceholderName = $(this).data('error-field-name') || $(this).attr('placeholder') || "This Field";

          if( $( this ).prop( 'required' )){

              singleElementMessages['required'] = $(this).data('error-required-message') || $(this).data('error-message')  || fieldPlaceholderName + " is required";

          }

          if( $( this ).attr( 'type' ) == 'email' ){

              singleElementMessages['email'] = $(this).data('error-email-message') || $(this).data('error-message')  || "Enter valid email in "+fieldPlaceholderName;

          }       



          validationMessages[fieldName] = singleElementMessages;

       });


       $(this).validate({
          errorClass   : "error-message",
          errorElement : "div",
          messages     : validationMessages  
       });  
   });  

이것을 공유해 주셔서 감사합니다. "errorClass"와 "errorElement"의 사용은 천재입니다! 이제 유효성 검사에서 생성 된 오류 메시지의 스타일과 위치를 적용 할 수 있습니다!
justdan23

3

최신 버전에는 멋진 인라인 작업이 있습니다.

간단한 입력 필드 인 경우 다음 data-validation-error-msg과 같은 속성을 추가 할 수 있습니다.

data-validation-error-msg="Invalid Regex"

조금 더 무거운 것이 필요한 경우 validate 함수에 전달 된 모든 값을 가진 변수를 사용하여 사물을 완전히 사용자 정의 할 수 있습니다. 자세한 내용은이 링크를 참조하십시오-https: //github.com/victorjonsson/jQuery-Form-Validator#fully-customizable


1
이것은 OP가 요청한 jQuery 유효성 검사 플러그인과 다른 플러그인입니다. 그러나 특히 HTML에 유효성 검사 관련 데이터 (규칙, 메시지)를 배치하면 사용자에게 호소력이있는 경우 (jQuery 유효성 검사 플러그인은 Javascript를 사용하여 반대 방향으로 진행) 나쁜 선택이 아닙니다. 레코드에 대한 다른 대안을 언급하기 위해 Parsley.js는 HTML 속성을 사용하는 널리 사용되는 모든 기능을 갖춘 유효성 검사 플러그인입니다.
Endre Both

2

모든 기본 오류 메시지를 제거하려면

$.validator.messages.required = "";

1
특정 분야에서이를 수행하는 방법은 무엇입니까?
151291

1

jQuery 양식 유효성 검사 사용자 정의 오류 메시지 -tutsmake

데모

$(document).ready(function(){
  $("#registration").validate({
    // Specify validation rules
    rules: {
      firstname: "required",
      lastname: "required",
      email: {
        required: true,
        email: true
      },      
      phone: {
        required: true,
        digits: true,
        minlength: 10,
        maxlength: 10,
      },
      password: {
        required: true,
        minlength: 5,
      }
    },
    messages: {
      firstname: {
      required: "Please enter first name",
     },      
     lastname: {
      required: "Please enter last name",
     },     
     phone: {
      required: "Please enter phone number",
      digits: "Please enter valid phone number",
      minlength: "Phone number field accept only 10 digits",
      maxlength: "Phone number field accept only 10 digits",
     },     
     email: {
      required: "Please enter email address",
      email: "Please enter a valid email address.",
     },
    },
  
  });
});
<!DOCTYPE html>
<html>
<head>
<title>jQuery Form Validation Using validator()</title>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.js"></script>
<style>
  .error{
    color: red;
  }
  label,
  input,
  button {
    border: 0;
    margin-bottom: 3px;
    display: block;
    width: 100%;
  }
 .common_box_body {
    padding: 15px;
    border: 12px solid #28BAA2;
    border-color: #28BAA2;
    border-radius: 15px;
    margin-top: 10px;
    background: #d4edda;
}
</style>
</head>
<body>
<div class="common_box_body test">
  <h2>Registration</h2>
  <form action="#" name="registration" id="registration">
 
    <label for="firstname">First Name</label>
    <input type="text" name="firstname" id="firstname" placeholder="John"><br>
 
    <label for="lastname">Last Name</label>
    <input type="text" name="lastname" id="lastname" placeholder="Doe"><br>
 
    <label for="phone">Phone</label>
    <input type="text" name="phone" id="phone" placeholder="8889988899"><br>  
 
    <label for="email">Email</label>
    <input type="email" name="email" id="email" placeholder="john@doe.com"><br>
 
    <label for="password">Password</label>
    <input type="password" name="password" id="password" placeholder=""><br>
 
    <input name="submit" type="submit" id="submit" class="submit" value="Submit">
  </form>
</div>
 
</body>
</html>


-2

이러한 사용자 지정 오류 메시지 대신 텍스트 필드의 유형을 지정할 수 있습니다.

예 : 필드 유형을 type = 'email'로 설정하십시오.

플러그인은 필드를 식별하고 올바르게 확인합니다.


그는 그것을 정확하게 검증하도록 요구하지 않고, 메시지를 다시 써달라고 요청합니다 .... "오류 메시지를 다시 작성하여 내 앱에 더 개인화하고 싶습니다"
Benoit
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.