Program Tip

jQuery.validation에서 같지 않음 규칙을 추가하는 방법

programtip 2020. 11. 29. 12:10
반응형

jQuery.validation에서 같지 않음 규칙을 추가하는 방법


필드가 값과 같지 않은 규칙을 만들 수 있도록 만드는 방법이 궁금합니다. 'name'이라는 필드가 있으므로 'name'= 'Your Name'을 원하지 않습니다.

아무도 이것을하는 방법에 대한 아이디어가 있습니까? 도움을 주셔서 감사합니다.


다음과 같은 사용자 지정 방법을 사용할 수 있습니다.

jQuery.validator.addMethod("notEqual", function(value, element, param) {
  return this.optional(element) || value != param;
}, "Please specify a different (non-default) value");

그런 다음 다음과 같이 사용하십시오.

$("form").validate({
  rules: {
    nameField: { notEqual: "Your Name" }
  }
});

이와 같은 규칙으로 추가하면 더 확장 가능하므로 다른 필드의 기본값과 비교할 때 사용할 수 있습니다.


Nick의 대답은 법안에 맞습니다. 양식의 두 필드를 비교하여 같지 않은지 확인해야했습니다. 나는 그것을 약간 수정했습니다.

jQuery.validator.addMethod("notEqual", function(value, element, param) {
 return this.optional(element) || value != $(param).val();
}, "This has to be different...");

$("#cform").validate(
{
    rules: {
        referringsales: { required: false, notEqual: "#salesperson" }
    }
});

댓글에 답하기 위해 수정 됨 :

비교할 드롭 다운 세트가 두 개 이상있는 경우이 방법은 해당 사례에서도 작동합니다.

jQuery.validator.addMethod("notEqual", function(value, element, param) {
 return this.optional(element) || value != $(param).val();
}, "This has to be different...");

$("#cform").validate(
{
    rules: {
        referringsales: { required: false, notEqual: "#salesperson" }
        DropDown2: { required: false, notEqual: "#SecondBase" }
    }
});

추천 판매를 서로 다른 2 개의 기준 (예 : #initialContact 및 #salesperson)과 비교하는 것과 관련된 질문 인 경우 해당 규칙을 목록에 추가하면됩니다.

referringsales: { required: false, notEqual: "#salesperson", notEqual: "#initialContact" }

다중 값 함수를 제안합니다 ...

jQuery.validator.addMethod("notEqualTo",
function(value, element, param) {
    var notEqual = true;
    value = $.trim(value);
    for (i = 0; i < param.length; i++) {
        if (value == $.trim($(param[i]).val())) { notEqual = false; }
    }
    return this.optional(element) || notEqual;
},
"Please enter a diferent value."
);

그리고 나는 그것을 ...

$("#abm-form").validate({
debug: true,
rules: {
    password1: {
        required: true,
        minlength: 10,
        notEqualTo: ['#lastname', '#firstname', '#email']
    },
    password2: {
        equalTo: '#password1'
    }
}
});

이것은 나를 위해 작동합니다!


다운로드 패키지의 additional-methods.js에는 "notEqualTo"라는 이름이 있습니다.

https://github.com/jzaefferer/jquery-validation/blob/master/src/additional/notEqualTo.js


답변을 받았는지 확실하지 않지만 :

return this.optional (element) || value! = param;

값이 변수이면 작동하지 않습니다.

읽어야합니다.

return this.optional (element) || value! = $ (param) .val () ;

건배


질문이 의미하는 것과 같지 않은 값이 하나만 있으면 외부 플러그인 없이도 매우 쉽게 확인할 수 있습니다.

$('#yourForm').submit(function(e) {
    if ( $('input[name="yourField"]').val()=='Your Name' )
        e.preventDefault();
        alert("Your message here");
    }
});

Thanks a lot, Nick !!! A little adding: if you have a few fields to validate into validate() function, the syntax should be :

self.logo.rules(
    'add', {
       notEqual: "Select the Logo"
     }
);

Thanks for @Nick Craver♦'s answer, but in my working environment, it needs to be slightly modified before it could work.

 $.validator.addMethod("notEqualTo", function(value, element, param) {
       return this.optional(element) || value != $(param).val();
 }, 'This two elements are the same, please change it.');

Taking some great examples here, I wrote another version that works with multiple field to check against

/*=====================================================*/
/* Jquery Valiation addMethod*/
/* Usage:  password: {notEqualTo: ['#lastname', '#firstname', '#email']} */
/*====================================================*/
jQuery.validator.addMethod("notEqualTo",
    function (value, element, param) {
        var notEqual = true;
        value = $.trim(value);
        for (i = 0; i < param.length; i++) {

            var checkElement = $(param[i]);
            var success = !$.validator.methods.equalTo.call(this, value, element, checkElement);
            // console.log('success', success);
            if(!success)
                notEqual = success;
        }

        return this.optional(element) || notEqual;
    },
    "Please enter a diferent value."
);
/*=====================================================*/
/*=====================================================*/

Usage

    $("form").validate(
        {
            rules: {
                passwordNewConfirm: {equalTo: "#passwordNew"},
                passwordNew: { notEqualTo: "#password" },
                password: { notEqualTo: ['#passwordNew', '#passwordNewConfirm'] }
            },
        });

참고URL : https://stackoverflow.com/questions/3571347/how-to-add-a-not-equal-to-rule-in-jquery-validation

반응형