2011-03-16 217 views
0

我有一個表單,我試圖在fancybox(www.fancybox.net)內提交。如果我直接轉到表格,它會提交罰款。但是,如果我在頁面內部加載表單,我想從窗體調用fancybox不會提交,fancybox消失,頁面刷新。我已經嘗試了fancybox和facebox到同一個問題..下面是我已經在主頁中的所有JQuery代碼。此頁面打開fancybox並在後面提交表單。該表格是爲了顯示一個感謝消息從窗口時,它提交刷新頁面,而不是..任何幫助深表感謝:jQuery表單提交問題

的JavaScript:

$(document).ready(function() { 

    $("#various1").fancybox({ 
     'opacity': true, 
     'overlayShow': false, 
     'transitionIn': 'none', 
     'autoscale': 'false', 
     'transitionOut': 'none' 
    }); 

    $("submit").submit(function() { 
     alert('it submits'); 

     // we want to store the values from the form input box, then send via ajax below 
     var name = $('#name').attr('value'); 
     var email = $('#email').attr('value'); 
     var password = $('#password').attr('value'); 
     var custom1 = $('#custom1').attr('value'); 
     var custom2 = $('#custom2').attr('value'); 
     var custom3 = $('#custom3').attr('value'); 
     var custom4 = $('#custom4').attr('value'); 
     var custom5 = $('#custom5').attr('value'); 
     var custom6 = $('#custom6').attr('value'); 
     var custom7 = $('#custom7').attr('value'); 
     var custom8 = $('#custom8').attr('value'); 
     var custom9 = $('#custom9').attr('value'); 
     var custom10 = $('#custom10').attr('value'); 
     $.ajax({ 
      type: "POST", 
      url: "test.php", 
      data: "name=" + name + "& email=" + email + "& password=" + password + "& custom1=" + custom1 + "& custom2=" + custom2 + "& custom3=" + custom3 + "& custom4=" + custom4 + "& custom5=" + custom5 + "& custom6=" + custom6 + "& custom7=" + custom7 + "& custom8=" + custom8 + "& custom9=" + custom9 + "& custom10=" + custom10, 

      success: function() { 

       $('submit').fadeOut(function() { 
        $('div.success').fadeIn(); 
       }); 
      } 
     }); 
     return false; 
    }) 

; });

鏈接形式:

<a id="various1" href="register.php"> 
+0

我沒有看到實際的代碼中的錯誤,其中的工作示例的鏈接去了哪裏? – Valerij 2011-03-16 00:35:46

+0

你不應該使用'.attr('value')' - jQuery擁有'.val()'是有原因的。另外,http://jsbeautifier.org/在發佈代碼之前格式化代碼是一件好事。 – ThiefMaster 2011-03-16 00:38:36

回答

0
data: "name=" + name + "& email=" + email + "& password=" + password + "& custom1=" + custom1 + "& custom2=" + custom2 + "& custom3=" + custom3 + "& custom4=" + custom4 + "& custom5=" + custom5 + "& custom6=" + custom6 + "& custom7=" + custom7 + "& custom8=" + custom8 + "& custom9=" + custom9 + "& custom10=" + custom10, 

這是錯的,不正確的和醜陋的。 &之後不應有空格。其實,傳遞一個字符串已經很糟糕了。通過這樣的對象:使用data: data

這裏的固定版本

var data = { name: name, email: email, password: password, custom1: custom1, ... }; 

$(document).ready(function() { 

    $("#various1").fancybox({ 
     'opacity': true, 
     'overlayShow': false, 
     'transitionIn': 'none', 
     'autoscale': 'false', 
     'transitionOut': 'none' 
    }); 

    $("form").submit(function() { 
     var data = { 
      name: $('#name').val(), 
      email: $('#email').val(), 
      password: $('#password').val(), 
      custom1: $('#custom1').val(), 
      custom2: $('#custom2').val(), 
      custom3: $('#custom3').val(), 
      custom4: $('#custom4').val(), 
      custom5: $('#custom5').val(), 
      custom6: $('#custom6').val(), 
      custom7: $('#custom7').val(), 
      custom8: $('#custom8').val(), 
      custom9: $('#custom9').val(), 
      custom10: $('#custom10').val() 
     }; 

     $.ajax({ 
      type: "POST", 
      url: "test.php", 
      data: data, 
      success: function() { 
       $('submit').fadeOut(function() { 
        $('div.success').fadeIn(); 
       }); 
      } 
     }); 
     return false; 
    }) 

你真的應該使用jquery form plugin雖則提交該表格..爲您節省了大量的工作打字的所有字段名稱...

+1

DANGIT!打敗我發佈它。無論如何,我必須補充的是,他應該使用$ .serialize()來發送他的表單數據 - http://api.jquery.com/serialize/ - 在大小寫的情況下手動輸入所有這些輸入很麻煩他需要在飛行中改變它們。 – mattsven 2011-03-16 00:49:24

+0

確實。甚至可以使用真棒的[jQuery表單插件](http://jquery.malsup.com/form/)。 – ThiefMaster 2011-03-16 00:50:35

+0

感謝您的評論傢伙會嘗試的意見..對不起,因爲醜陋..我在網上找到了代碼,並開始使用jQuery .. – Nikon0266 2011-03-16 01:15:33