2013-11-25 37 views
1

我試圖從模態窗口內使用模態頁腳中的模態按鈕提交窗體。 表單本身通過ajax從鏈接(控制器/動作)加載。Yii bootstrap使用模式按鈕在模態窗口內提交表單

只是爲了更清楚我重視這樣的畫面: enter image description here

這是模態代碼:

<?php $this->beginWidget('bootstrap.widgets.TbModal', array('id'=>'modal')); ?> 

<div class="modal-header"> 
    <a class="close" data-dismiss="modal">&times;</a> 
    <h4>Client Ticket Status Update</h4> 
</div> 
<div class="modal-body"> 

</div> 
<div class="modal-footer"> 
    <?php $this->widget('bootstrap.widgets.TbButton', array(
     'buttonType'=>'ajaxSubmit', 
     'type'=>'primary', 
     'label'=>'Save changes', 
     'url'=>'#', 
     'htmlOptions'=>array('data-dismiss'=>'modal'), 
    )); ?> 
    <?php $this->widget('bootstrap.widgets.TbButton', array(
     'label'=>'Close', 
     'url'=>'#', 
     'htmlOptions'=>array('data-dismiss'=>'modal'), 
    )); ?> 
</div> 

<?php $this->endWidget(); ?> 

這是加載模式內部形式的javascript:

$("a[data-toggle=modal]").click(function(){ 
    var target = $(this).attr('data-target'); 
    var url = $(this).attr('href'); 
    if(url){ 
     $(target).find(".modal-body").load(url); 
    } 
}); 

這是表單視圖:

<div class="form"> 

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'client-ticket-form', 
    'enableAjaxValidation'=>false, 
)); ?> 

    <p class="note">Fields with <span class="required">*</span> are required. </p> 


    <?php echo $form->errorSummary($ticket); ?> 

    <div> 
     <?php echo $form->labelEx($ticket,'sent_to'); ?> 
     <?php echo $form->textField($ticket,'sent_to'); ?> 
     <?php echo $form->error($ticket,'sent_to'); ?> 
    </div> 

    <div> 
     <?php echo $form->labelEx($ticket,'courier'); ?> 
     <?php echo $form->textField($ticket,'courier'); ?> 
     <?php echo $form->error($ticket,'courier'); ?> 
    </div> 

    <div> 
     <?php echo $form->labelEx($ticket,'awb'); ?> 
     <?php echo $form->textField($ticket,'awb'); ?> 
     <?php echo $form->error($ticket,'awb'); ?> 
    </div> 

    <div> 
     <?php echo $form->labelEx($ticket,'awb_date'); ?> 
     <?php echo $form->textField($ticket,'awb_date'); ?> 
     <?php echo $form->error($ticket,'awb_date'); ?> 
    </div> 


    <div class="buttons"> 
     <?php echo CHtml::submitButton($ticket->isNewRecord ? 'Create' : 'Save'); ?> 
    </div> 

<?php $this->endWidget(); ?> 

</div><!-- form --> 

任何幫助是非常讚賞。如果您需要更多信息,請詢問。

+0

什麼是你的任務欄中的遊戲? – tinybyte

+0

你嘗試過嗎? – tinybyte

+0

嗨,它是戰地4。「)真棒遊戲的方式。 –

回答

1

更改代碼:

<div class="modal-footer"> 
<?php $this->widget('bootstrap.widgets.TbButton', array(
    'type'=>'primary', 
    'label'=>'Save changes', 
    'url'=>'#', 
    'htmlOptions'=>array('onclick' => '$("#formID").submit()'), 
)); ?> 
<?php $this->widget('bootstrap.widgets.TbButton', array(
    'label'=>'Close', 
    'url'=>'#', 
    'htmlOptions'=>array('data-dismiss'=>'modal'), 
)); ?> 

+0

它完美的工作。在我的情況下,我用一個類名提交表單,因爲我想使用單一的模式來顯示和提交多種形式。你真棒,謝謝! –

0

只是觸發另一個你不想顯示的點擊事件,一個也隱藏它!在模型的頁腳如下

1

這第一個響應並沒有解決我的提交模式窗體關閉的問題。對於有問題的其他人,我必須在CActiveForm中啓用客戶端驗證。

它結束了看起來像這樣:

$form = $this->beginWidget(
    'CActiveForm', 
    array(
     'id' => 'feature-form', 
     'enableAjaxValidation' => true, 
     'enableClientValidation' => true, 
     'clientOptions' => array(
      'validateOnSubmit' => true, 
      'validateOnChange' => true, 
      'validateOnType' => true 
     ) 
     ) 
); 

希望這有助於以後我一定來。

相關問題