Programing

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

lottogame 2020. 3. 2. 13:02
반응형

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


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

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


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

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}.")
});

확인 통화에서 자신의 메시지를 지정할 수 있습니다. 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


이것은 나를 위해 일했다 :

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

이것은 나를 위해 일했다 :

// 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.",
            }
        }
    })

이미 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')
    }
    // ...
});

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

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

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

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

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

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

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


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

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

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

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


나는 이것이 그렇게 쉬운 것이라고 결코 생각하지 않았다. 나는 그런 검증을 다루기 위해 프로젝트를 진행하고 있었다.

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

아래 접근 방식은 "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  
       });  
   });  

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

$.validator.messages.required = "";

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>


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

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

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

참고 URL : https://stackoverflow.com/questions/2457032/jquery-validation-change-default-error-message



반응형