2011-07-21 99 views
0

我有這樣的功能,當我點擊我的提交按鈕:驗證形式與jQuery上提交

$('#signup-button').click(function(event){ 
      var username_check = validateUsernameField(); 
      var email_check = validateEmailField(); 
      var name_check = validateNameField(); 
      var birthdate_check = validateBirthdateField(); 
      event.preventDefault(); 
      if(username_check && email_check && name_check && birthdate_check) { 
       alert('lol'); 
       var formData = $('#FonykerAddForm').serialize(); 
       $.ajax ({ 
        type: 'POST', 
        url: '<?php echo $html->url('/fonykers/add',true); ?>', 
        data: formData, 
        dataType: 'json', 
        success: function(response) { 
         $("#confirm-dialog").html(response.msg).dialog({ 
          autoOpen: false, 
          modal: true, 
          height: 140, 
          title: response.title 
         });  
         $('#confirm-dialog').dialog('open'); 
        }, 
        error: function (xhr, ajaxOptions, thrownError){ 
         alert('Cualquier vaina'); 
         alert(xhr.statusText); 
         alert(thrownError); 
        } 
       }); 
      } 
     }); 

我以前叫上我的領域模糊事件的驗證方法,他們所有的工作和驗證在這裏似乎工作,問題是在if語句沒有任何反應之後,表單不會被提交。有人知道爲什麼嗎?如果沒有,你可以想一個更好的方式來驗證提交之前我所有的領域?

+0

你有沒有嘗試把一個斷點在Firebug的,並通過行由行步進。此外,您可以嘗試在表單的「提交」事件上運行,例如$( 'form.my_form')提交(函數(){ 如果($(本).find( 'input.my_input')VAL()長度> 20){ 返回假; //返回false以防止提交表單 } 迴歸真實的; //提交表單 }); – ghayes

+0

你有沒有檢查過你'如果'有'真'? – Rafay

+0

定義匹配'其他{警報(「笑!」);}'看看是否顯示 – Rafay

回答

0

問題是我在if語句中使用的變量有些返回undefined,所以它搞砸了調用。我簡單地替換檢查變量來檢查我的DOM元素上的設置類,看看他們是否有錯誤,並且工作正常。

-1

我認爲這個問題是event.preventDefault()

如果你認爲它會阻止提交表單是行不通的默認操作,因此,一個更好的選擇將是你調用每個函數中使用return false;

例如

function validateUsernameField(){ 

    if($("#UsernameField").val()=="") { 
     // your username actions 
     return false; 
    } 
    else 
    { 
    username_check = 1 
    return true; 
    } 
} 

if(username_check == 1 && email_check == 1 && name_check == 1 && birthdate_check == 1) { 
    alert('lol'); 

    var formData = $('#FonykerAddForm').serialize(); 
    $.ajax ({ 
     type: 'POST', 
     data: formData, 
     dataType: 'json', 
     success: function(response) { 
      $("#confirm-dialog").html(response.msg).dialog({ 
       autoOpen: false, 
       modal: true, 
       height: 140, 
       title: response.title 
      });  
      $('#confirm-dialog').dialog('open'); 

     }, 
     error: function (xhr, ajaxOptions, thrownError){ 
      alert('Cualquier vaina'); 
      alert(xhr.statusText); 
      alert(thrownError); 
     } 
    }); 

}else{ 
    alert ('There is something wrong'); 
    return false; 
} 
+0

如果我不阻止默認情況下它會做的默認POST行動,將不執行AJAX調用。 – 8vius

+0

downvote是不必要的@ 8vius。 –