2011-03-09 74 views
0

我正在編寫一個表單,它將更改用戶的所有配置文件設置。我有HTML和PHP設置正確並且正常工作,但是使用jQuery條件& Ajax被證明是一個問題。jQuery條件和Ajax問題

它應該驗證電子郵件是否有。然後,它應該確保更改不是密碼更改(如果是,請確保密碼匹配然後發佈),然後發佈如果表單有效。它似乎沒有考慮任何條件和帖子。

 $("profSet").validate({ 
     rules: { 
      chem: { 
       email: true 
      } 
     } 
    }); 

    $('#subSet').live('click',function() { 
     if($("#chfn").val() == 0 && $("#chln").val() == 0 && $("#chpw").val() == 0 && $("#chpw2").val() == 0 && $("#chem").val() == 0) 
     { 
      if($("#profSet").valid()) 
      { 
       if($("#chpw").val() == "" && $("#chpw2").val() == "") 
       { 
        $.post('php/profSet.php', $('#profSet').serialize(), function(){ 
         $('#profSet').hide(); 
         $('#success').show(); 
        }); 
       } 
       else 
       { 
        if($("#chpw").val() == $("#chpw2").val()) 
        { 
         $.post('php/profSet.php', $('#profSet').serialize(), function(){ 
          $('#profSet').hide(); 
          $('#success').show(); 
         }); 
        } 
        else 
        { 
         $('#error').show(); 
        } 
       } 
      } 
     } 
    }); 

任何幫助?

+0

你可以把一些半功能代碼放入一個JSFiddle或其他東西嗎?沒有HTML張貼 – Dutchie432 2011-03-09 19:33:55

回答

1

你可能想在你點擊方法開始申報var valid = true並將其設置爲false,如果你的任何檢查失敗,然後在你的驗證方法結束後,執行檢查if(!valid) { e.preventDefault() }停止事件傳播。您的處理程序現在不做任何事情來停止事件傳播。爲了做到這一點,你應該改變你的匿名點擊處理函數來接受事件作爲我稱之爲「e」的參數,以便你可以短路提交。