2010-10-04 74 views
1

我正在使用一些jQuery,特別是對於錯誤和感謝消息。 jQuery的一部分可以在這裏查看:
http://jsbin.com/ohuya3
表單的一個工作示例可在此處獲得:
http://cozyphant-living.com/php/formular4.htm
您必須點擊「Formular senden」按鈕才能看到消息面板。
我想讓謝謝和/或錯誤面板滑出並讓文本淡入。腳本正在接受我的代碼(因爲它仍在工作),但實際上我看不到文本實際上已淡入。已經看到滑動面板的文字漸變的樣本。所以這似乎是我做的一種錯誤的編碼。
任何幫助表示讚賞。jQuery Panel - slideOut和fadeIn函數同時出現問題

回答

1

的問題是,你的#formResponse容器不是隱藏在第一。 。一旦響應文本插入到它,它會直接顯示,而不是衰落,你需要聲明display: none;隱藏它:然後

<div class="contact-form-text" id="formResponse" style="display: none;"></div> 

Ajax回調函數將插入文字吧,然後消除它在


更新:如果你想BOTH幻燈片和,那麼你將需要使用額外的反應容器,因爲它一旦滑出時,淡入淡出它IS a已經可見並且不能從100%的可見度中淡入。所以,你想會是這樣的:

<div id="formResponse_container" style="display:none;"> <!-- extra wrapper --> 
    <div id="formResponse" class="contact-form-text" style="display:none;"></div> 
</div> 

,然後在jQuery腳本,而不是

$("#formResponse").hide().html(data).show('slow'); //hide before slide! 

你會

$("#formResponse_container").slideDown("slow", function() { 
    $("#formResponse").html(data).fadeIn("slow"); 
}); 

那是什麼呢,它會首先向下滑動外部容器,一旦該動畫完成,它將在內部容器中褪色。

Live example

希望這有助於。

+0

實際上它被設置爲顯示:無。請在這裏查看我在該面板上使用了什麼,然後再次檢查我的面板本身的鏈接。這只是沒有發生。該面板滑出,但根本沒有淡入。 – markimark 2010-10-04 11:52:41

+0

@ Hardy - 請看我更新的答案。 – 2010-10-04 12:14:58

+0

是的,你是對的,這是要做的,我已經做到了。像一個迷人的工作。我將它與@Nick的初始方法解決方案相結合,因爲我認爲代碼更簡潔明瞭,但是我將它與visuel效果的方法結合使用,因爲它更好控制。我喜歡結果。它仍然可以在我發佈的鏈接下查看。再次感謝你的幫助。 ????如何接受這裏的答案?似乎不可能。 – markimark 2010-10-04 13:00:41

1

使用.show()與同時滑動+持續時間淡出你的情況,你想要的效果,:

$("#formResponse").html(data).show('slow') 

You can test out the effect here


爲您的代碼具體你需要從#formResponse對象中刪除margin: 0 auto;,導致與上面的動畫代碼的麻煩。還可以序列中位的形式更容易鄰維護方式,這樣整體:

$("#contact_form").submit(function() { 
    var arr = $(this).serializeArray();   //serialize form, based on names 
    arr.push({ name: 'senden', value: 'yes' }); //add the senden variable 
    $.post('mail.php', arr, function(data) { //pass that object as your data 
    $("#formResponse").hide().html(data).show('slow'); //hide before slide! 
    }, 'text'); 
    return false; 
}); 
+0

@Nick - 這聽起來像一個乾淨的解決方案,但不幸的是,這種效果在Chrome中玩(顯示)瘋狂。它只是從正確的邊界飛出,然後發生在它所屬的地方。你可以再次檢查我的鏈接,如果你可以嘗試鉻... – markimark 2010-10-04 11:06:22

+0

@ Hardy - 檢查出更新的答案,你的問題目前是'margin:0 auto;'元素...但通過執行上述操作,您可以稍後更輕鬆地進行維護。你的'.validate()'方法也會引發一些錯誤...插件不包含在404代碼中的佔位符插件,並且在* jQuery之前加載(jQuery應該總是在插件之前),並確保像' .validate()'在'document.ready'處理程序中:) – 2010-10-04 11:50:31

+0

@Nich - 哇,這是很多但非常感激。我知道,現在的標記是一團糟。這不像我通常那樣做,但在那種情況下,我只是嘗試了許多不同的新事物,並且有點混亂。對不起。我明白,如果我希望得到這個社區的一些幫助,我會保持清潔。接下來我會嘗試你的解決方案。它看起來非常不同,因爲它使用的是數組。讓我們看看發生了什麼。會盡快告訴你。 – markimark 2010-10-04 11:59:57