在一个页面中,我呈现了另一个页面与表单在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'));
});
发布于 2019-03-29 08:32:53
您正在使用jquery .load()
方法在模式窗口中加载表单,无论您在模式窗口中单击close on模式按钮还是在再次单击按钮+
时单击覆盖背景,都会在模式窗口中再次加载内容。
因此,如果你真的想这样做,你将不得不将表单移动到你拥有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');
});
https://stackoverflow.com/questions/55408558
复制相似问题