2011-10-04 23 views
0

我有以下代碼:jQuery驗證()的JS方法插件提交

<a href="#" onclick="submit_form('http://allstateagents.contextoptional.com//create_lead'); return false;"><img alt="Btn_requestaquote" src="http://a0.allstateagents.contextoptional.com/images/btn_requestAquote.png?1317752211"></a> 

對應於:

function submit_form(posturl) { 
    $.ajax({ 
     url: '/create_lead', 
     data: { 
     'lead_gen[promotion_id]': $('#lead_gen_promotion_id').val(), 
     'lead_gen[name]': $('#lead_gen_name').val(), 
     'lead_gen[email]': $('#lead_gen_email').val(), 
     }, 
     type: 'POST', 
     dataType: 'json', 
     success: function(data) { 
     console.log(data) 
     $('#content').html(data.html); 
     } 
    }); 

我打電話驗證和我的形式,跳過驗證並直接轉到post方法。我知道validate()正在工作,因爲我使用一個事件來調用行中的驗證。

$(document).ready(function(){ 
    $("#lead_gen_email").validate(); 
    console.log("testing validate") 


    $("#lead_gen_email").validate({ 
     onkeyup: true 
    }) 

    }); 
    } 

我做錯了什麼?我怎樣才能解決這個問題?

+0

後的HTML表單,你是依靠表單類指定的驗證規則,所以我們需要看到那些。在這裏看到演示代碼。 http://docs.jquery.com/Plugins/Validation – BNL

回答

1

這是因爲您已將ajax帖子附加到onClick。無論驗證腳本如何,它都會觸發ajax 。使用像

$('#yourlink').click(function(e){ 
if (aVariableThatIndicatesPresenceOfErrors) { 
    e.preventDefault() 
} else { 
    submit_form(posturl) 
} 

}) 

當然,該變量將不得不作出某種決定。也許是一個錯誤消息類的選擇器?

var hasError = $('div.error').length; 

不確定validate插件是否有一個回調方法,雖然可以取消所有這些。

0

您將需要實際使用表單的提交事件來自動驗證。您的代碼只需通過ajax w/o驗證任何內容即可發佈到服務器。

0

您可以使用下面的代碼:

function submit_form(posturl) { 
if ($("#targetFormId").valid()) { 
$.ajax({ 
    url: '/create_lead', 
    data: { 
    'lead_gen[promotion_id]': $('#lead_gen_promotion_id').val(), 
    'lead_gen[name]': $('#lead_gen_name').val(), 
    'lead_gen[email]': $('#lead_gen_email').val(), 
    }, 
    type: 'POST', 
    dataType: 'json', 
    success: function(data) { 
    console.log(data) 
    $('#content').html(data.html); 
    } 
} 
}); 

替換「targetFormId」與您的表單ID

相關問題