我们希望提交一个模式弹出窗口,告诉用户“请等待”,直到表单完成提交。
以下是我的 _form.php 的一部分(仅提供可读的建议):
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'event-form',
'enableClientValidation' => true,
'clientOptions'=>
array('validateOnSubmit'=>true,
'afterValidate'=>'js:function() {
$("#publishErrors").empty();
$("#event-form_es_").empty();
i = true;
if($("#EntityEvent_active").is(":checked"))
{
$("#publishErrors").show().append("<p>Please check:</p>")
if($("#Event_name").val()=="")
{
$("#Event_name").addClass("error");
...
...
我承认我在这个过程中有点迷失,我不确定这是否会起作用,仍然是:
我正在考虑放置这个:
$this->beginWidget('zii.widgets.jui.CJuiDialog'
, array('options'=>array(
'title'=>'My Title'
, 'modal'=>true
))
);
echo 'Please Wait While Your Form is Being Submitted';
$this->endWidget('zii.widgets.jui.CJuiDialog');
在'afterValidate'的最后 -
有更好的方法吗?
请咨询
答案 0 :(得分:1)
已经有一个jquery插件:jQuery BlockUI plugin。
但是如果你想使用CJuiDialog,只需确保closeOnEscape
为false
,modal
为true
,autoOpen
也应为{{} 1}}。
如果您愿意,也可以在CJuiDialog中使用jQueryUI Progressbar来显示进度。
编辑:
隐藏对话框x按钮的示例代码:
false
打开对话框:$this->beginWidget('zii.widgets.jui.CJuiDialog',
array(
'id'=>'mywaitdialog',
'options'=>array(
'title'=>'My Title',
'modal'=>true,
'autoOpen'=>false,// default is true
'closeOnEscape'=>false,
'open'=>// supply a callback function to handle the open event
'js:function(){ // in this function hide the close button
$(".class-of-closebutton").hide();
}'
))
);
。
您可以在afterValidate中打开对话框,正如您所猜到的那样。当表单数据传递到服务器时,对话框将显示,完成后将进行URL导航(将加载新页面)。