2012-07-13 5 views
33

자바 스크립트 비트를 제출합니다. 아이디어는 Ajax로 양식을 보내기 전에 모든 입력을 검증하는 것입니다. 나는 지금이 여러 버전을 시도했지만 양식이 완전히 채워지지는 않았지만 제출할 때마다 끝납니다. 모든 입력은 "필수"클래스입니다. 누구든지 내가 뭘 잘못하고 있는지 알 수 있니?jQuery를 폼 유효성 검사 아약스 전에

또한 필자는 입력 이름이 PHP로 생성되므로 클래스 기반 요구 사항에 따라 달라 지므로 어떤 이름 [id] 또는 입력 유형을 얻을 수 있는지 확신 할 수 없습니다.

"페이지"에서 질문을 표시/숨 깁니다.

<input type="button" id="next" onClick="toggleVisibility('form3')" class="next-btn"/> 

JS는 :

function toggleVisibility(newSection) 
     { 
      $(".section").not("#" + newSection).hide(); 
      $("#" + newSection).show(); 
     } 
+0

를 게재 할 수있을만큼 다음 더? –

+0

현재 모든 $ key => $ 값 쌍을 출력하고 1/4의 질문 만 채우더라도 내 화면에 계속 나타납니다. – Tom

+0

jquery (v1.7.2)의 최신 버전에서 $ .ajax에 대한 유효한 옵션으로'beforeSubmit'을 찾을 수 없습니다. jquery의 최신 버전을 사용할 수 있습니다. 즉, 대린의 대답은 그것이 어떻게 행해져 야 하는가이다. 즉, 그가 제안한 것을 수행 할 수 없다면, 이전에 제출 한 행을 Fliespl이 입력 한 코드로 대체하십시오. '.validate()'의 리턴 값을 검사 할 필요가 있고 따라서 ajax 요청을 진행하거나 취소해야한다. –

답변

72

당신은 submitHandler 옵션을 사용할 수 있습니다. 기본적으로 $.ajax 호출을이 처리기 안에 넣습니다. 즉, 유효성 검사 설정 논리로 반전합니다.

$('#form').validate({ 

    ... your validation rules come here, 

    submitHandler: function(form) { 
     $.ajax({ 
      url: form.action, 
      type: form.method, 
      data: $(form).serialize(), 
      success: function(response) { 
       $('#answers').html(response); 
      }    
     }); 
    } 
}); 

jQuery.validate 플러그인은 검증이 경과 한 경우는 핸들러를 제출 호출합니다.

+0

하지만 $ .ajax 바로 전에 유효성을 검사하거나 막대기를 사용하기 전에 #answers를 serialize 할 수 있습니까? – Tom

+0

Nevermind, 지금 직접 시리얼 라이즈를 보았습니다. :) – Tom

+0

# answers는 결과 div입니다. 양식 입력 필드 값을 AJAX 요청과 함께 보내려면 제출 내 '내 대답 :'data : $ (form) .serialize()'=>에서와 같이'.serialize()'메서드를 사용하십시오. 매니저. –

6

당신은 일을 시도 할 수 있습니다 :

if($("#form").validate()) { 
return true; 
} else { 
return false; 
} 
+0

쉽고 매력적인 마법처럼! : * 고마워요 ^^ – Tom

+0

오, 너무 피곤했을 것입니다. 아직도 작동하지 않습니다 :/ – Tom

+0

나는 여러 개의 "페이지"로 나눌 때 양식을 표시하지 않습니다. 문제가 발생할 수 있다고 생각하십니까? – Tom

3

내가 첫 번째 양식을 확인하고 유효성 검사가 통과 할 경우,보다 내가 아약스 게시물을 할 것이라고 생각합니다. 스크립트 끝 부분에 "return false"를 추가하는 것을 잊지 마십시오.

10

우선 required이 jquery.validate 플러그인에 의해 자동 감지되므로 명시 적으로 classRules을 추가 할 필요가 없습니다. 그래서이 코드를 사용할 수 있습니다 양식이 잘못된 정지가 실행 경우 양식

  1. 제출을 기본 동작을
  2. 을 방지 할 수 있습니다.
  3. 기타 유효한 경우 ajax 요청을 보냅니다.

    $('#form').submit( function(e){  
    
          e.preventDefault(); 
          var $form = $(this); 
    
          // check if the input is valid 
          if(! $form.valid()) return false; 
    
          $.ajax({ 
           type: 'POST', 
           url: 'add.php', 
           data: $('#form').serialize(), 
           success: function(response) { 
            $("#answers").html(response); 
           } 
    
          }); 
         }); 
    
+0

나를 위해 작동하는 것 같지 않습니다 :/ – Tom

+0

브라우저 로그에 오류가 있는지 확인하고 어떤 브라우저를 사용합니까? – amd

+0

Google 크롬을 사용하고 있지만 오류를 찾을 수 없습니다. 이 코드를 한 번 더 사용해보십시오. – Tom

4

이 구체적인 예는 입력을 확인합니다하지만 당신은 그러나 그것을 조정할 수 귀하의 아약스 기능이 같은 추가 : JQuery와 유효성 검사가 좋은과 내가 submitHandler 생각

beforeSend: function() {      
    $empty = $('form#yourForm').find("input").filter(function() { 
     return this.value === ""; 
    }); 
    if($empty.length) { 
     alert('You must fill out all fields in order to submit a change'); 
     return false; 
    }else{ 
     return true; 
    }; 
}, 
3

해결책. 이 코드에서 아이디어를 얻으십시오[email protected] 디미트로프에서 영감을

$('.calculate').validate({ 

       submitHandler: function(form) { 
        $.ajax({ 
         url: 'response.php', 
         type: 'POST', 
         data: $(form).serialize(), 
         success: function(response) { 
          $('#'+form.id+' .ht-response-data').html(response); 
         }    
        }); 
       } 
      }); 
3
> Required JS for jquery form validation 
> ## jquery-1.7.1.min.js ## 
> ## jquery.validate.min.js ## 
> ## jquery.form.js ## 

$("form#data").validate({ 
    rules: { 
     first: { 
       required: true, 
      }, 
     middle: { 
      required: true, 
     },   
     image: { 
      required: true, 
     }, 
    }, 
    messages: { 
     first: { 
       required: "Please enter first", 
      }, 
     middle: { 
      required: "Please enter middle", 
     },   
     image: { 
      required: "Please Select logo", 
     }, 
    }, 
    submitHandler: function(form) { 
     var formData = new FormData($("#image")[0]); 
     $(form).ajaxSubmit({ 
      url:"action.php", 
      type:"post", 
      success: function(data,status){ 
       alert(data); 
      } 
     }); 
    } 
}); 
+0

이 답변은 초심자를 위해 아주 명확하게 설명되어 있습니다 ... 감사합니다! 그러나 이것도 첨부 파일의 유효성을 검사하고 있습니까 !! 어떻게 !! –

0

양식 기본 자바 스크립트 checkValidity 기능은 HTML5 검증 제출하면 어떻게됩니까

$(document).ready(function() { 
    $('#urlSubmit').click(function() { 
     if($('#urlForm')[0].checkValidity()) { 
      alert("form submitting"); 
     } 
    }); 
});