2013-05-10 83 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