2016-12-08 2 views
1

내가 뭘 잘못하고 있는지 알 수 없습니다. 나는 형식이 올바르다면 양식을 사용하여 모달을 만들었습니다. .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">&times;</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'>&times;</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'>&times;</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'>&times;</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'>&times;</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()" >&times;</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()" >&times;</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()" >&times;</span>' + 
         '</button>' + 
         '</div>'; 
        $("h4.modal-title").before(message); 
        setTimeout(function() { 
         $('#adddnssave').prop('disabled', false); 
        }, 1500); 
       } 
      }); 
+0

질문에 관련 코드를 입력하십시오. 관련 코드를 게시하지 않고 jsFiddle을 게시하기 만해도 충분하지 않습니다. 감사. – Sparky

+0

@ Sparky 우리는 이미 그것을 해결했습니다. 그게 내가 어디서 오류가 있었는지 알지 못했던 전체적인 문제였습니다. – Laurence

+0

당신이 이미 그것을 풀었고 관련된 코드가 위에있는 jsFiddle에 있다는 것을 압니다. 그러나 jsFiddle이 죽었을 때처럼 여기에 특정 규칙이있는 데는 이유가 있습니다. 이 질문은 선물 독자에게 현재의 형태로 도움이되지 않습니다. 감사. – Sparky

답변

1

유효한 형태를 확인하고 있지만 유효한이 속성하지만 함수가 아닙니다.

변경이 :

if ($('form[name*="validate"]').valid) { 

here

업데이트 예를

if ($('form[name*="validate"]').valid()) { 

에 : 또 다른 문제는 JQuery와 유효성 검사를위한 필수 이름 속성이 누락 된 것이 었습니다. 이름 속성을 추가하면 문제가 해결되었습니다.

+0

이것은 내가 만든 가장 오만한 실수이고 너무 오래 죄송합니다. 응답 전설에 대해 대단히 힘듭니다. – Laurence

+0

실제로 작동하지 않습니다. 시도했지만 오류가 있습니다. 점심 시간에갔습니다. 늦은 응답으로 인해 불편을 겪었습니다. – Laurence

+0

무슨 뜻인지 이해가 안됩니다. 질문을 설명하거나 편집 해주십시오. – SSA