2011-06-15 17 views
0

所以我有一個形式,例如:點擊使JavaScript驗證更快發生?

<form action="URL" name=myform method=post onsubmit="return validateFormOnSubmit(this)" autocomplete=off> 

當提交表單時,它會檢查驗證。

此前,雖然,我有這樣的代碼:

<script type="text/javascript"> 

    $(function() { 
    $("#submitbutton").click(function() { 

     var fname = $("input#first_name").val(); 
     var lname = $("input#last_name").val(); 
     var email = $("input#email").val(); 
     var leadsource = $("input#leadsource").val(); 
     var country = $("input#country").val(); 
     var phone = $("input#phone").val(); 
     var oid = $("input#oid").val(); 
     var retURL = $("input#retURL").val(); 
     var crazy 
= $("input#00N40000001mCkP").val(); 
     var dataString = '&email=' + email + '&phone=' + phone + '&oid=' + oid + '&retURL=' + retURL + '&leadsource=' + leadsource + '&country=' + country; //alert (dataString);return false; $.ajax({ 
    type: "POST", 
    url: "MYURL.php?first_name=" 
+ fname + "&last_name=" + lname, 
    data: dataString, 
    success: function(response) { $(myform).submit(); } 
    }); 
    return false; }); 

    }); </script> 

本質上發生了什麼時,表單數據最初通過AJAX發送到不同的URL提交完成真正形成之前。 ajax推送成功後 - 表單被提交,然後表單被驗證。

雖然在ajax請求之前單擊#submitbutton,但我需要表單驗證纔有權限。有任何想法嗎?

+1

它會真正幫助人試圖幫助你,如果你格式化你的代碼,以便它不是那麼混亂和混亂。 – Pointy 2011-06-15 14:48:47

回答

1

該代碼應該工作得很好。如果你想將其添加到onclick=屬性的元素(我不會,但如果你堅持),你可以使用這個語法來引用形式:

<input type="submit" onclick="return validateFormOnSubmit(this.parentNode)" /> 

而且你必須做的e.preventDefault()return false(也許只是一個?)來自validateFormOnSubmit()函數。

+0

我不確定我是否理解我將如何實施? – Elliot 2011-06-15 15:10:18

+0

最後兩行防止「點擊」按鈕(無觸發)。只有當你不希望表單提交時纔打電話給他們。否則,讓它正常運行。 – Blender 2011-06-15 15:36:51

0

看看preventDefault。另外,您可以在上面的匿名函數中調用validateFormOnSubmit,如果驗證未通過,則返回false。

0

你應該在表單標籤屬性周圍放一些「」,並給它一個id!

只是打電話給你驗證功能的第一行中的按鈕單擊處理程序:)

$("#submitbutton").click(function(e) { 
    if(validateFormOnSubmit($('#myform'))){ 
     //do all the posting stuff 

    } 
    else{ 
     e.preventDefault(); 
     return false; 
    }