2014-08-27 29 views
1

首先,我沒有太多的JavaScript和jQuery的經驗:)我只是想找到一個快速的方式來連接jquery電子郵件驗證模塊與檢查recaptcha的函數。這裏是我的代碼:jquery驗證模塊和函數調用成功後

jQuery.validator.setDefaults({ 
debug: true, 
success: "valid" 
}); 
$("#myform").validate({ 
rules: { 
field: { 
required: true, 
email: true 
} 
} 
}); 

工作正常!輸入被驗證。

現在經過驗證,我需要兩件事:首先,我需要調用recapVerify(),在獲得驗證後,我需要提交表單。這是我使用的示例:email method。我知道我現在需要使用submitHandler,但我無法弄清楚在哪裏以及如何?

Btw。這是我想要使用的recapVerify()函數:

function recapVerify(){ 
    $.ajax({ 
    type:'post', 
    url: 'captcha_check.php', 
    data: { 
     recaptcha_challenge_field:$('#recaptcha_challenge_field').val(), 
     recaptcha_response_field:$('#recaptcha_response_field').val() 
    } 
}).done(function(data, textStatus, jqXHR){ 
    if (data == 'success'){ 
     $('#err').addClass('hidden'); 
     //document.forms[0].submit(); // uncomment this line to submit your form 
     alert('Success, the form and reCAPTCHA validated, your form was submitted'); 
    } else { 
     $('#err').removeClass('hidden'); 
    } 
}).fail(function(jqXHR,textStatus,errorThrown){ 
     console.log('recaptcha or service failure'); 
}); 
} 
+1

任何js錯誤即將到來。? – Pramod 2014-08-27 10:37:50

+0

我在瀏覽器中看不到任何錯誤,但是如果我添加'success:recapVerify();'而不是'success:document.forms [0] .submit()'jquery驗證模塊將不起作用?我的意思是,它會傳遞給操作腳本,而無需事先檢查字段輸入? – mrki 2014-08-27 10:50:50

+1

嘗試使用'submitHandler:recaptchaVerify()'而不是'success:recaptchaVerify()'。根據http://jqueryvalidation.org/validate/上的文檔,'success'用於表示有效的輸入。 – 2014-08-27 10:51:10

回答

1

在你的jQuery驗證函數上使用submitHandler。調試是不需要的。實質上,這是你需要的JavaScript。

$(document).ready(function(){ 
    $("#test-form").validate({ 
     rules: { 
      name: { 
       required: true, 
      }, 
      email : { 
       required : true, 
       email : true 
      } 
     }, 
      submitHandler : recaptchaVerify 
    }); 
}); 

function recaptchaVerify(form){ 
    console.log(form); 
    alert("in submit handler"); 
} 

根據在jQuery的文件驗證

submitHandler(默認:天然的形式提交)

類型:Function()

回調處理實際提交表單時已驗證。獲取表格 作爲唯一的參數。替換默認的提交。 經過驗證後,通過Ajax提交表單。

也創建了一個fiddle以便您可以使用它。

+0

你試過了嗎?我已經做了,它不工作?在這種情況下,驗證將不起作用,表單將在輸入驗證之前提交:( – mrki 2014-08-27 12:31:25

+0

@mrki - 你是否嘗試過這種方式?它應該可以工作 – 2014-08-28 05:21:04

+0

@ Arvind Sridharan是的,我剛剛做了,它不會驗證電子郵件字段,它會請在不驗證的情況下調用recaptchaVerify – mrki 2014-08-28 09:26:53