jQuery 유효성 검사-숨겨진 필드에 대한 유효성 검사 사용
jQuery 유효성 검사 플러그인 1.9의 새 버전에서는 기본적 으로 숨겨진 필드의 유효성 검사가 무시 됩니다. 텍스트 영역 입력 필드에 CKEditor를 사용하고 있으며 필드를 숨기고 iframe으로 바꿉니다. 필드가 있지만 숨겨진 필드에 대해서는 유효성 검증이 사용 불가능합니다. 유효성 검사 플러그인 버전 1.8.1을 사용하면 모든 것이 예상대로 작동합니다.
그래서 내 질문은 v1.9 유효성 검사 플러그인으로 숨겨진 필드에 대한 유효성 검사를 활성화하는 방법입니다.
이 설정이 작동하지 않습니다 :
$.validator.setDefaults({ ignore: '' });
플러그인 작성자는 "따옴표없이 대괄호" 를 사용해야한다고 말합니다 .[]
http://bassistance.de/2011/10/07/release-validation-plugin-1-9-0/
릴리스 : Validation Plugin 1.9.0 : "... 숨겨진 요소가있는 양식의 설정을보다 쉽게 변경해야합니다. 이제 기본적으로 무시됩니다 ("ignore "옵션이": hidden "옵션을 기본값으로 사용함). 이론적으로는 다음과 같습니다. 실제로 발생하지 않을 경우 ignore-option을 "[]"(따옴표없이 대괄호)로 설정하여 문제를 해결할 수 있습니다.
모든 양식에 대해이 설정을 변경하려면
$.validator.setDefaults({
ignore: [],
// any other default options and/or rules
});
( 기능 .setDefaults()
내에있을 필요는 없습니다 document.ready
)
또는 하나의 특정 형태의 경우 :
$(document).ready(function() {
$('#myform').validate({
ignore: [],
// any other options and/or rules
});
});
편집 :
일부 숨겨진 필드에서 유효성 검사를 활성화하지만 다른 필드는 여전히 무시하는 방법 은 이 답변 을 참조하십시오 .
편집 2 :
"이 작동하지 않습니다"라는 의견을 남기기 전에 OP는 단순히 jQuery Validate 플러그인 에 대해 묻고 있으며 ASP.NET, MVC 또는 기타 Microsoft 프레임 워크가이 플러그인의 표준을 변경하는 방법과 는 아무런 관련 이 없습니다. 예상되는 행동. Microsoft 프레임 워크를 사용하는 경우 jQuery Validate 플러그인의 기본 기능은 Microsoft unobtrusive-validation
플러그인 으로 덮어 씁니다.
unobtrusive-validation
플러그인으로 어려움을 겪고 있다면 https://stackoverflow.com/a/11053251/594235 대신이 답변을 참조하십시오.
이것은 ASP.NET MVC3 사이트 내에서 누군가에게 유용 할 때를 위해 눈에 띄지 않는 유효성 검사 등을 설정하기 위해 프레임 워크를 남겼습니다.
$("form").data("validator").settings.ignore = "";
넣어주세요
$.validator.setDefaults({ ignore: '' });
내부가 아님$(document).ready
그래서 나는 하하를 알지 못하고 밤에 잠을 잘 수없는 사람이기 때문에 이것이 왜 작동하지 않는지 조금 더 자세히 살펴볼 것입니다. 2013 년 1 월 29 일에 게시 된 jQuery validate 1.10 및 Microsoft jQuery Unobtrusive Validation 2.0.20710.0을 사용하고 있습니다.
jQuery Validate에서 setDefaults 메소드를 검색하여 시작하여 축소되지 않은 파일의 261 행에서 찾았습니다. 이 기능은 json 설정에 $.validator.defaults
정의 된 다른 기본값과 함께 ignore 속성이 ": hidden"으로 설정되어 초기화 된 기존 설정으로 json 설정을 병합하는 것 입니다. 따라서이 시점에서 무시했습니다. 이제이 defaults 속성이 어디에서 참조되는지 봅시다.
코드를 추적하여 참조되는 곳을봤을 때 $.validator.defaults
. jQuery의 170 행에서 양식 유효성 검사기의 생성자만이 축소되지 않은 파일의 유효성을 검사하는 것으로 나타났습니다.
// constructor for validator
$.validator = function( options, form ) {
this.settings = $.extend( true, {}, $.validator.defaults, options );
this.currentForm = form;
this.init();
};
이때 유효성 검사기는 설정된 모든 기본 설정을 병합하여 양식 유효성 검사기에 연결합니다. 유효성 검사, 강조 표시, 강조 표시 해제 등을 수행하는 코드를 보면 모두 validator.settings 객체를 사용하여 ignore 속성을 가져옵니다. 따라서 setDefaults 메소드로 ignore를 설정해야한다면 $ ( "form"). validate ()가 호출되기 전에 발생해야합니다.
If you're using Asp.net MVC and the unobtrusive plugin, then you'll realize after looking at the javascript that validate is called in document.ready. I've also called my setDefaults in the document.ready block which is going to execute after the scripts, jquery validate and unobtrusive because I've defined those scripts in the html before the one that has the call in it. So my call obviously had no impact on the default functionality of skipping hidden elements during validation. There is a couple of options here.
Option 1 - You could as Juan Mellado pointed out have the call outside of the document.ready which would execute as soon as the script has been loaded. I'm not sure about the timing of this since browsers are now capable of doing parallel script loading. If I'm just being over cautious then please correct me. Also, there's probably ways around this but for my needs I did not go down this path.
Option 2a - The safe bet in my eyes is to just replace the $.validator.setDefaults({ ignore: '' });
inside of the document.ready event with $("form").data("validator").settings.ignore = "";
. This will modify the ignore property that is actually used by jQuery validate when doing each validation on your elements for the given form.
Options 2b - After looking in to the code a bit more you could also use $("form").validate().settings.ignore = "";
as a way of setting the ignore property. The reason is that when looking at the validate function it checks to see if a validator object has already been stored for the form element via the $.data()
function. If it finds a validator object stored with the form element then it just returns the validator object instead of creating another one.
This worked for me within an ASP.NET site. To enable validation on some hidden fields use this code
$("form").data("validator").settings.ignore = ":hidden:not(#myitem)";
To enable validation for all elements of form use this one $("form").data("validator").settings.ignore = "";
Note that use them within $(document).ready(function() { })
Just added ignore: []
in the specific page for the specific form, this solution worked for me.
$("#form_name").validate({
ignore: [],
onkeyup: false,
rules: {
},
highlight:false,
});
This is working for me.
jQuery("#form_name").validate().settings.ignore = "";
Just find the text ignore: ":hidden" in your jquery validation file and comment it. After comment this it will never loss any hidden elements to validate...
Thanks
참고URL : https://stackoverflow.com/questions/8466643/jquery-validate-enable-validation-for-hidden-fields
'Programing' 카테고리의 다른 글
Laravel-Eloquent "Has", "With", "WhereHas"-무슨 뜻입니까? (0) | 2020.05.20 |
---|---|
IPython 노트북 마크 다운에 이미지 삽입 (0) | 2020.05.20 |
Node.js-“btoa가 정의되지 않았습니다”오류 (0) | 2020.05.20 |
Django Forms에서 CSS 클래스 정의 (0) | 2020.05.20 |
pandas DataFrame에서 특정 열 이름 변경 (0) | 2020.05.20 |