JQuery는 하나의 오류로 여러 필드 유효성 검사
JQuery Validate 플러그인을 사용하여 3 개의 필드에 대해 하나의 오류 메시지를 표시하려면 어떻게해야합니까? 예를 들어 3 개의 dob 필드. 기본적으로 3 개의 필드를 모두 비워두면 3 개의 오류 메시지가 표시됩니다. 3 개의 필드에 하나의 오류 만 연결하고 싶습니다. 비어 있으면 오류가 발생합니다.
Chris와 비슷한
$("form").validate({
rules: {
DayOfBirth: { required: true },
MonthOfBirth: { required: true },
YearOfBirth: { required: true }
},
groups: {
DateofBirth: "DayOfBirth MonthOfBirth YearOfBirth"
},
errorPlacement: function(error, element) {
if (element.attr("name") == "DayOfBirth" || element.attr("name") == "MonthOfBirth" || element.attr("name") == "YearOfBirth")
error.insertAfter("#YearOfBirth");
else
error.insertAfter(element);
}
});
그룹 옵션을 사용하여 입력을 그룹화 할 수 있습니다. 각 입력에 오류 메시지가있는 경우 하나만 표시됩니다.
각 필드와 관련된 메시지를 재정의하고 싶을 것이므로 더 이해하기 쉽습니다. 예를 들어, 기본적으로 "이 필드는 필수입니다."와 같은 오류 메시지가 표시 될 수 있습니다. 글쎄, 그것은 세 가지 입력이있을 때 사용자에게 많은 유익을주지 않습니다. "The Local Number is required"라는 메시지를 무시할 수 있습니다. 이 예에서는 "유효한 전화 번호를 입력하십시오."라는 오류 메시지를 모두 덮어 썼습니다.
<input type="text" name="countryCode" />
<input type="text" name="areaCode" />
<input type="text" name="localNumber" />
groups: {
phoneNumber: "countryCode areaCode localNumber"
},
rules: {
'countryCode': {
required: true,
minlength:3,
maxlength:3,
number:true
},
'contactInformation[areaCode]': {
required: true,
minlength:3,
maxlength:3,
number:true
},
'contactInformation[localNumber]': {
required: true,
minlength:4,
maxlength:4,
number:true
},
},
messages: {
"countryCode": {
required: "Please enter a valid Phone Number",
minlength: "Please enter a valid Phone Number",
maxlength: "Please enter a valid Phone Number",
number: "Please enter a valid Phone Number"
},
"areaCode": {
required: "Please enter a valid Phone Number",
minlength: "Please enter a valid Phone Number",
maxlength: "Please enter a valid Phone Number",
number: "Please enter a valid Phone Number"
},
"localNumber": {
required: "Please enter a valid Phone Number",
minlength: "Please enter a valid Phone Number",
maxlength: "Please enter a valid Phone Number",
number: "Please enter a valid Phone Number"
}
},
나는 이것을 공유해야한다고 생각했다. 나를 위해 일한 전체 코드.
HTML
<div class="clearfix bl">
<label>Fecha de nacimiento</label>
<select name="fechanacimdia" id="fechanacimdia"></select>
<select name="fechanacimmes" id="fechanacimmes"></select>
<select name="fechanacimano" id="fechanacimano"></select>
</div>
JS
//hay que poblar selects de fecha
dia = $('#fechanacimdia');
mes = $('#fechanacimmes');
ano = $('#fechanacimano');
dia.append('<option>Día</option>');
for(i=1;i<=31;i++) {
dia.append('<option value="'+i+'">'+i+'</option>');
}
meses = ["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"]
mes.append('<option>Mes</option>');
for(i=1;i<=12;i++) {
mes.append('<option value="'+i+'">'+meses[i-1]+'</option>');
}
d = new Date();
year = d.getFullYear();
maxage = 100;
minage = 16;
ano.append('<option>Año</option>');
for(i=year-minage;i>=year-maxage;i--) {
ano.append('<option value="'+i+'">'+i+'</option>');
}
//--------- validate ------------------------
$('#formulario').validate({
rules: {
fechanacimdia: { required: true },
fechanacimmes: { required: true },
fechanacimano: { required: true, validdate: true }
},
groups: {
fechanacim: "fechanacimdia fechanacimmes fechanacimano"
},
messages: {
fechanacimdia: "Fecha de nacimiento no es válida.",
fechanacimmes: "Fecha de nacimiento no es válida.",
fechanacimano: "Fecha de nacimiento no es válida."
},
});
//funcion auxiliar para validar fecha de nacimiento correcta
jQuery.validator.addMethod("validdate", function(value, element) {
var month = +$('#fechanacimmes').val() - 1; // Convert to numbers with "+" prefix
var day = +$('#fechanacimdia').val();
var year = +$('#fechanacimano').val();
var date = new Date(year, month, day); // Use the proper constructor
return date.getFullYear() == year && date.getMonth() == month && date.getDate() == day;
});
이것은 HTML 부분입니다.
<div>
<p class="myLabel left">Date of birth:</p>
<p class="mandatory left">*</p>
<div class="left">
<p><input type="text" name="dobDay" class="required" /></p>
<p><i>dd</i></p>
</div>
<div class="left">
<p><input type="text" name="dobMonth" class="required" /></p>
<p><i>mm</i></p>
</div>
<div class="left">
<p><input type="text" name="dobYear" class="required" /></p>
<p><i>yyyy</i></p>
</div>
<div class="clear"></div>
<div class="myError">
<label for="dateOfBirth" class="error">Please enter a valid date.</label>
</div>
</div>
이것은 내가 사용한 스크립트입니다.
$(document).ready(function() {
$("#myForm").validate({
groups: {
dateOfBirth: "dobDay dobMonth dobYear"
},
rules: {
'dobDay': {
required: true,
minlength:1,
maxlength:2,
range: [1, 31],
number:true
},
'dobMonth': {
required: true,
minlength:1,
maxlength:2,
range: [1, 12],
number:true
},
'dobYear': {
required: true,
minlength:4,
maxlength:4,
number:true
},
},
});
});
모든 HTML 부분은 원하는대로 사용자 정의 할 수 있습니다. 이 필드를 기존 양식에 추가해야했기 때문에 이러한 복잡한 레이아웃을 사용했습니다. 그러나 그것은 작동하는 예입니다! 누구에게나 도움이되기를 바랍니다!
My take on it was to change jQuery validator
to validate anything with the validateable
attribute on it as well as the standard inputs. You can get the 1.9.0
modified version of the plugin here
Basically you import the new jquery validator and do something like this:
<script>
$.validator.addMethod(
"groupnotnull",
function(value, element) {
return $("input[type='text']:filled",element).length!=0;
},
function(regexp, element) {
return "At least one input must be specified";
}
);
</script>
<div validateable="true" name="groupValidated" groupnotnull="true">
<input type="text" name="foo"/>
<input type="text" name="blah"/>
</div>
The modifications required on jQuery validator
were to make it use .attr('name')
instead of .name
because .name
only works on form fields. And modify the key up handlers etc. to bind to children of the validateable
element.
This is a little more dynamic than groups in that it allows fields to be validated in relation to each other rather than just as single entities.
This code will display one common error if any of the required fields is blank.
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function(){
$("#myform").validate({
invalidHandler: function(form, validator) {
var errors = validator.numberOfInvalids();
if (errors) {
var message ='You missed ' + errors + ' fields.';
$("#messageBox").html(message);
$("#messageBox").show();
} else {
$("#messageBox").hide();
}
},
showErrors: function(errorMap, errorList) {
},
submitHandler: function() { alert("Submit!") }
})
});
</script>
</head>
<body>
<script type="text/javascript" src="http://dev.jquery.com/view/trunk/plugins/validate/jquery.validate.js"></script>
<div id="messageBox"></div>
<ul id="errorlist"></ul>
<form id="myform" action="/loginurl" method="post">
<label>DOB1</label>
<input name="dob1" class="required" />
<label>DOB2</label>
<input name="dob2" class="required" />
<label>DOB3</label>
<input name="dob3" class="required" />
<br/>
<input type="submit" value="Submit"/>
</form>
</body>
</html>
A couple options: Check out the errorContainer
. You can make all of the errors go to a completely separate <div>
. Or you can check out the invalid
block, and just have an errorMessage.show()
command.
ReferenceURL : https://stackoverflow.com/questions/1289086/jquery-validate-multiple-fields-with-one-error
'program story' 카테고리의 다른 글
매니페스트 파일이 다른 Android Studio 두 가지 버전 (0) | 2021.01.08 |
---|---|
for 루프에서 과학적 표기법 사용 (0) | 2021.01.08 |
Razor : 'Write'메서드에 대한 오버로드는 0 인수를 사용합니다. (0) | 2021.01.08 |
아파치를 시작하고 내 컴퓨터를 계속 죽일 때 많은 아파치 프로세스가 생성되는 것을 어떻게 방지 할 수 있습니까? (0) | 2021.01.08 |
Visual Studio 2012의 일반 C # 편집기 (인텔리전스 없음, 들여 쓰기 없음, 코드 강조 표시 없음) (0) | 2021.01.07 |