본문 바로가기

웹개발/스크립트

jquery.validate 같은이름 배열 처리 방법


배열 처리시 첫번째 값에 대한 검증만 처리 되므로 확장 부분을 추가하면 나머지 기능도 처리 함.

<input type="text" name="test[]">

<input type="text" name="test[]">

<input type="text" name="test[]">

<input type="text" name="test[]">

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.17.0/jquery.validate.min.js"></script>
<script>
$("#form id").validate({
errorElement: "div",
wrapper: "div",
errorPlacement: function(error, element) {
offset = element.offset();
error.insertAfter(element);
error.css('color','red');
},
rules: {
'test[]' : {required: true}
},
messages:{
'test[]':{
required:"내용을 입력해 주세요"
}
}
});

//확장판 name[] 처리
$.extend( $.validator.prototype, {
checkForm: function () {
this.prepareForm();
for (var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++) {
if (this.findByName(elements[i].name).length != undefined && this.findByName(elements[i].name).length > 1) {
for (var cnt = 0; cnt < this.findByName(elements[i].name).length; cnt++) {
this.check(this.findByName(elements[i].name)[cnt]);
}
} else {
this.check(elements[i]);
}
}
return this.valid();
}
});
</script>


node.js (express) 에서 request 받을시에는 req.body['test[]']로 받으면 배열로 받아짐.