2013-05-10 96 views
0

我有/只能有一個Jquery對話框。該對話框向用戶提供一些廣告內容。 在閱讀它時,用戶可以利用該優惠或暫時忽略它。如何呈現/不呈現關閉Jquery對話框的鏈接?

用戶可以通過單擊對話框內的提交按鈕來提供報價。 或者他可以通過點擊「稍後提醒」鏈接來關閉對話框,從而忽略它。 對話框中的內容通過Ajax進行更新。所以點擊提交按鈕後, 一個感謝信息顯示在同一個對話框內。

當用戶使用優惠時,「稍後提醒我」鏈接仍然存在。如果用戶點擊該按鈕,邏輯上,對話框 應該再次顯示。但是,用戶已經利用了該優惠!

如何渲染或不渲染關閉jquery對話框的鏈接的程序化?

代碼對話框如下,

$h(document).ready(function() { 

      $h("#showForm").dialog({ 
       open: function(event, ui) { 
        jQuery('.ui-dialog-titlebar-close').html('<span>Remind me later</span>'); 
        jQuery('.ui-dialog-content').removeClass("ui-dialog-content").addClass("advertise-upgrade-content"); 
       }, 
       duration: 800, 
       height: 727, 
       minWidth: 811, 
       width: 811, 
       position: ['middle', 154], 
       zIndex: 99999999, 
       modal: true, 
       show: { 
        effect: 'puff', 
        duration: 400 
       }, 
       hide: { 
        effect: 'puff', 
        duration: 400 
       } 

      }); 
     }); 



    <div id="showForm" height: 670px;"> 
    <div class="submitClass"> 
     <a4j:commandLink immediate="true" action="#{myBean.clickToAvail}" reRender="renderSuccess" value="Submit"> 
     </a4j:commandLink> 
    </div> 

    <h:panelGroup id="renderSuccess"> 
     <h:outputText value="Thank you for availing this offer">  
    </h:panelGroup> 
    </div> 

現在用jquery.min.jsjquery-1.6.2.jsjquery-ui.min.js

回答

2

open功能,進行邏輯校驗Thank you消息容器是否可見(假設它是可見的,只有當用戶已經受益於該報價),如果它是可見,隱藏close(「稍後提醒我」你的情況)否則,顯示它。

此外,您正在使用非常通用的代碼來操作open中的對話屬性。你應該利用ui的variableto使你的代碼具體到只有當前對話框

參考this threadui可變

同時編輯close操作和使用例子:讓四個轉變

1 )給範圍一個ID

注意:這個仍然需要特定於此對話框。請參考上面提到的線程。 ');

jQuery('.ui-dialog-titlebar-close').html('<span id=\'reminder\'>Remind me later');

2)定義一個布爾變量在Bean說availed並將其設置在clickToAvail方法

public void clickToAvail(){ 
// business logic here 
this.availed = true; 
} 

3)使用dataoncomplete

<a4j:commandLink immediate="true" action="#{myBean.clickToAvail}" data="#{myBean.availed}" reRender="renderSuccess" value="Submit" oncomplete="removeReminder(event.data);"> 
     </a4j:commandLink> 

4)定義removeReminder javascript函數中您的頁面的<head>

function removeReminder(availed){ 
if(availed == 'true' || availed == true) 
$('#reminder').hide(); // or remove() decide as per your requirement 
} 
+0

如果報價是可用的,我可以在bean中設置一個'boolean'。問題是如何在對話框中邏輯檢查這個布爾值是「true」還是「false」? – 2013-05-10 06:31:44

+0

在'提交'點擊ajax之後,你更新了對話內容嗎?你可以隱藏那個ajax請求的'成功'關閉嗎? – Nikhil 2013-05-10 10:12:32

+0

那..那是我的問題。我不知道如何根據我的bean中的值來隱藏'Close'(以我的方式稱之爲「稍後提醒我」)。 – 2013-05-10 10:33:49