1

我在我的網站上有一個表格(http://www.jakelazaroff.com/#contact),我用jQuery提交。表單成功提交時的回調函數應該使表單消失;但是,由於某些原因,這隻適用於某些瀏覽器/操作系統組合。眼下,兼容性列表如下:jQuery Form回調兼容性問題

WORKS 
o firefox 3.0, xp 
o firefox 3.0.14, vista 
o firefox 3.0.15, vista 
o firefox 3.5.5, os 10.6.2 
v chrome 4.0.249.30, os 10.6.2 
o chrome 3.0.195.33, w7 

DOESNT WORK 
o safari 4.0.4, os 10.6.2 
o safari 4.0.3, os 10.5.8 
o firefox 3.5.5, w7 
o firefox 3.5.5, os 10.5.8 
o chrome 3.0.195.33, vista 

o = unreproduced, v = reproduced, x = conflicting 

...這是一個奇怪的列表(它在Firefox 3.5.5在Mac OS 10.6.2,但不能在Firefox 3.5.5運行在Mac Os 10.5.8?)。我用它來驗證/提交表單的代碼,回調函數,如下:

// hide the form and display success message (called after form is submitted) 
function formHide() { 

    // cache form wrapper and blurb 
    var formWrapper = $("#contactForm"); 
    var formBlurb = $("#contact .formBlurb"); 

    // set the height of wrapper and blurb 
    formWrapper.height(formWrapper.height()); 
    formBlurb.height(formBlurb.height()); 

    // fade out required fields message, fade in success message 
    formBlurb.find(".requiredFields").fadeOut("fast", function() { 
    formBlurb.find(".thanks").fadeIn("fast"); 
    }); 

    // fade out form 
    formWrapper.find("form").fadeOut("slow", function(){ 
    // slide up the div so there's no jump 
    formWrapper.slideUp("slow"); 
    }); 
} 

// cache the form 
var form = $("#contactForm form"); 

// validate the form 
$("#contactForm form").validate({ 
    // when errors are made... 
    errorPlacement: function() { 
    // turn the background on those elements red 
    $("#contactForm form .error").animate({ backgroundColor:"#ff6666" }, "fast"); 
    }, 
    // when submitting the form... 
    submitHandler: function(form){ 
    $(form).ajaxSubmit({ 
    // use fm.pl as the submission script 
    url: "cgi-bin/fm.pl", 
    // hide the form if it's successful 
    success: formHide 
    }); 
    } 
}); 

我使用這個插件可以在http://malsup.com/jquery/form/發現,我用的是驗證插件可以在http://bassistance.de/jquery-plugins/jquery-plugin-validation/找到。有什麼我錯過了打破兼容性?

謝謝:)

P.S. 對不起,我沒有格式化我用作鏈接的插件的URL - 我無法發佈多個鏈接,直到我有10個聲望點。
P.P.S.好吧,發佈這個信息給了我10個聲望點,所以我使用的插件的URL現在是鏈接。

+0

+1也讓你10分:)現在你可以編輯你的文章! – Rippo 2009-12-14 07:48:35

回答

0

它只是淡出不起作用?這些行看起來很可疑:

formWrapper.height(formWrapper.height()); 
    formBlurb.height(formBlurb.height()); 

您是否試圖設置已經存在的高度?

+0

我明確將#contactForm的高度設置爲它的原因,否則當表單淡出時,#contactForm將沒有內容並摺疊,導致其餘內容跳起來以填充空格。 通過明確設置高度,即使內容沒有任何內容,元素也會保持其高度 - 允許我將其向上滑動,以便頁面的其餘部分順利向上移動以填充空白區域。 – Jake 2009-12-14 22:44:16

0

罪魁禍首似乎是在「成功:形式隱藏」中省略了括號。我的印象是,這是好的,但顯然不是。