在一个页面中我使用bootstrap modal
中的表单渲染另一个页面,当填充输入时如果关闭模态(不提交)只有单击(x)将可以在打开模态时再次保持值输入?
指数,PHP
<?= Html::a('<button class="btn btn-info">+</button>',['app/create'], ['id' => 'btn-add']) ?>
<?php
Modal::begin([
'header' => '<div id="modal-title"></div>',
'id' => 'modal',
'size' => 'modal-lg',
'clientOptions' => ['backdrop' => 'static', 'keyboard' => false],
]);
echo "<div id='modalContent'></div>";
Modal::end();
?>
JS
$('body').on('click', '#btn-add', function(e) {
e.preventDefault();
$('#modal').modal('show').find('#modalContent').load($(this).attr('href'));
});
您正在使用jquery .load()
方法在模态窗口内加载表单,无论您单击模式按钮上的关闭还是叠加背景,当您再次单击按钮+
时,您将再次在模态窗口内加载内容。
因此,如果您真的想要这样做,您将必须在具有Modal
代码的同一视图中移动表单,这意味着您必须将内联形式添加并将按钮javascript更改为$('#modal').modal('show')
。它应该如下
<?= Html::a('<button class="btn btn-info">+</button>','#', ['id' => 'btn-add']) ?>
<?php
Modal::begin([
'header' => '<div id="modal-title"></div>',
'id' => 'modal',
'size' => 'modal-lg',
'clientOptions' => ['backdrop' => 'static', 'keyboard' => false],
]);?>
<div id='modalContent'>
<?php
//your active form starts here
$form = ActiveForm::begin(
[
'id' => 'your-form-id',
'action' => Url::to(['/controller/action'])
]
);
?>
<?php
ActiveForm::end();
?>
</div>
<?php Modal::end();
?>
你的Js应该很简单
$('body').on('click', '#btn-add', function(e) {
e.preventDefault();
$('#modal').modal('show');
});