내가 뭘 잘못하고 있는지 알 수 없습니다. 나는 형식이 올바르다면 양식을 사용하여 모달을 만들었습니다. .valid();
뭔가 잘못해서 필드가 빨간색으로 바뀌면 jquery 유효성 검사기가 여전히 잘못된 결과를 발견했습니다. true
왜 이런 일이 일어나고 있는지 검색하고 있습니다. 1 일 동안. 아마 너희 둘 중 하나가 알 것 같아.유효하지 않은 경우 jquery 유효성 검사기가 여전히 닫습니다.
여기에 사전에 작업 snipplet에게 https://jsfiddle.net/jgytud7h/6/
감사합니다!
편집 : 첫 번째 입력란을 작성하고 유형을 선택하십시오. 그것은 거친조차도 내 눈에는 유효하지 않은 형태를 닫을 것입니다.
HTML :
<span class="data-label" data-toggle="modal" data-target="#adddnsmodal" onclick="">Add DNS</span> <div class="modal fade" id="adddnsmodal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="myModalLabel">Add DNS</h4>
</div>
<div class="modal-body">
<form id="modalvalidate" name="validatemodal1">
<div class="input-group">
<input type="text" id="domainadd" class="form-control" value="test" disabled>
<span class="input-group-addon">Domain</span>
</div>
<br>
<div class="input-group">
<input type="text" id="extadd" class="form-control" value="nl" disabled>
<span class="input-group-addon">Extention</span>
</div>
<br>
<div class="input-group">
<input type="text" id="nameadd" class="form-control subdomain" required>
<span class="input-group-addon">Sub domain</span>
</div>
<br>
<div class="input-group">
<input type="text" id="contentadd" class="form-control" required>
<span class="input-group-addon">Content</span>
</div>
<br>
<div class="input-group">
<input type="number" id="prioadd" class="form-control prio" required>
<span class="input-group-addon">Prio</span>
</div>
<br>
<div class="input-group">
<input type="number" id="ttladd" class="form-control onlynumbers" required>
<span class="input-group-addon">TTL</span>
</div>
<br>
<div class="input-group">
<select class="form-control" id="typeadd">
<option value="notselected" selected disabled>Select a type</option>
<option value="A">A</option>
<option value="AAAA">AAAA</option>
<option value="CNAME">CNAME</option>
<option value="MX">MX</option>
<option value="SOA">SOA</option>
<option value="TXT">TXT</option>
<option value="SRV">SRV</option>
</select>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-success" id="adddnssave">Save changes</button>
</div>
</div>
</div>
</div>
jQuery를 : 당신의 jsfiddle 예에서
.validator.addMethod("subdomain", function(value, element) {
return this.optional(element) || /^[A-Za-z0-9](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?$/i.test(value);
},"<strong>Error! </strong>Invalid subdomain.<span></span><button type='button' class='close' onclick='removeMSG()' aria-label='Close'><span aria-hidden='true'>×</span></button>");
$.validator.addMethod("domain", function(value, element) {
return this.optional(element) || /^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][a-zA-Z0-9-_]{1,61}[a-zA-Z0-9]))\.([a-zA-Z]{2,6}|[a-zA-Z0-9-]{2,30}\.[a-zA-Z]{2,3})$/i.test(value);
},"<strong>Error! </strong>Invalid domain.<span></span><button type='button' class='close' onclick='removeMSG()' aria- label='Close'><span aria-hidden='true'>×</span></button>");
$.validator.addMethod("prio", function(value, element) {
return this.optional(element) || /^(10|1)$/i.test(value);
},"<strong>Error! </strong>Invalid Prio.<span></span><button type='button' class='close' onclick='removeMSG()' aria-label='Close'><span aria-hidden='true'>×</span></button>");
$.validator.addMethod("onlynumbers", function(value, element) {
return this.optional(element) || /^[0-9]+$/i.test(value);
},"<strong>Error! </strong>Field Must contain only numbers<span></span><button type='button' class='close' onclick='removeMSG()' aria-label='Close'><span aria-hidden='true'>×</span></button>");
$('form[name*="validate"]').validate({
errorElement:'div',
errorClass: 'alert alert-danger',
validClass: 'alert-success',
onkeyup: false,
onclick: false,
errorPlacement: function(error, element) {
error.addClass('messagediv2');
error.addClass('page-controls');
error.insertAfter("h4.modal-title");
}
});
$('form[name*="validate"]').on('change', function(){
$(this).validate();
if ($(this).valid) {
$(".messagediv2").remove();
}
});
$('#adddnssave').on('click', function() {
$('#adddnssave').prop('disabled', true);
if ($('#typeadd').val() != 'notselected' && $('#typeadd').val() != null) {
if ($('form[name*="validate"]').valid()) {
$.ajax({
url: "",
type: "post",
data: {
domain: $('#domainadd').val(),
ext: $('#extadd').val(),
name: $('#nameadd').val(),
type: $('#typeadd').val(),
content: $('#contentadd').val(),
prio: $('#prioadd').val(),
ttl: $('#ttladd').val()
},
dataType: "json",
success: function (response) {
var message =
'<div class="page-controls alert alert-success" style="top:50px;position:relative;border-radius: 0 0 0.25rem 0.25rem;">' +
'<strong>' + response + ' </strong> <span>DNS is successfully added</span>' +
'<button type="button" class="close" aria-label="Close">' +
'<span aria-hidden="true" onclick="removeMSG()" >×</span>' +
'</button>' +
'</div>';
$('#adddnsmodal').modal('hide');
$("#navbarmenue").after(message);
setTimeout(function() {
$('#adddnssave').prop('disabled', false);
}, 2000);
},
error: function (jqXHR, textStatus, errorThrown) {
setTimeout(function() {
$('#adddnssave').prop('disabled', false);
}, 1500);
console.log(textStatus, errorThrown, 'error');
}
});
} else {
$('#adddnssave').prop('disabled', false);
var message =
'<div class="page-controls alert alert-danger" style="top:50px;position:relative;border-radius: 0 0 0.25rem 0.25rem;">' +
'<strong>' + response + ' </strong> <span>Modal is not valid</span>' +
'<button type="button" class="close" aria-label="Close">' +
'<span aria-hidden="true" onclick="removeMSG()" >×</span>' +
'</button>' +
'</div>';
$("#navbarmenue").after(message);
}
} else {
var message =
'<div class="page-controls alert alert-danger messagediv2">' +
'<strong>Error </strong> <span>Select a type</span>' +
'<button type="button" class="close" aria-label="Close">' +
'<span aria-hidden="true" onclick="removeMSG()" >×</span>' +
'</button>' +
'</div>';
$("h4.modal-title").before(message);
setTimeout(function() {
$('#adddnssave').prop('disabled', false);
}, 1500);
}
});
질문에 관련 코드를 입력하십시오. 관련 코드를 게시하지 않고 jsFiddle을 게시하기 만해도 충분하지 않습니다. 감사. – Sparky
@ Sparky 우리는 이미 그것을 해결했습니다. 그게 내가 어디서 오류가 있었는지 알지 못했던 전체적인 문제였습니다. – Laurence
당신이 이미 그것을 풀었고 관련된 코드가 위에있는 jsFiddle에 있다는 것을 압니다. 그러나 jsFiddle이 죽었을 때처럼 여기에 특정 규칙이있는 데는 이유가 있습니다. 이 질문은 선물 독자에게 현재의 형태로 도움이되지 않습니다. 감사. – Sparky