1

我们希望抛出一个模式弹出窗口,告诉用户“请等待”,直到表单完成提交。

这是我的_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”的最后 -

有更好的方法吗?

请指教

4

1 回答 1

1

已经有一个 jquery 插件:jQuery BlockUI plugin

但是如果你想使用 CJuiDialog,只要确保closeOnEscapeis false,并且modalis true,也autoOpen应该是false

如果您愿意,您还可以在CJuiDialog 中使用 jQueryUI Progressbar来显示进度。

编辑:

隐藏对话框的 x 按钮的示例代码:

$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();
                    }'
         ))
);

要打开对话框:$("#mywaitdialog").dialog("open");

如您所料,您可以在 afterValidate 中打开对话框。当表单数据传递到服务器时,对话框将显示,完成后将出现 url 导航(将加载新页面)。

于 2012-07-12T08:13:47.897 回答