jQueryでBootstrapのモーダルを閉じた時にフォームをリセットする方法
68 回閲覧されました
みなさんこんにちは、jonioです。
今回はモーダルを閉じた時にモーダルの中にあるフォームをリセットする方法を解説します。
一部CakePHPが入りますがその部分は無視してください。
HTML
コードを下記にします。
<div class="modal fade" id="checkInModal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">
<span aria-hidden="true">×</span>
</button>
</div>
<?= $this->Form->create(null, ['url' => ['action' => 'record']]) ?>
<div class="modal-body">
<?= $this->Form->control('password', [
'type' => 'password',
'label' => 'パスワード',
'required' => true,
])?>
</div>
<div class="modal-footer">
<?= $this->Form->button('送信', ['class' => 'btn btn-primary', 'id' => 'confirm-check-in']) ?>
</div>
<?= $this->Form->end() ?>
<button type="button" class="btn btn-secondary" data-dismiss="modal">戻る</button>
</div>
</div>
</div>
9行目〜20行目がフォームに該当します。
jQuery
コードを下記にします。
$('#checkInModal').on('hidden.bs.modal', function() {
$(this).find('form').trigger('reset');
});
「.on(‘hidden.bs.modal’」でBootstrapで作るモーダルを閉じた時という意味になります。
その時に2行を記述することでモーダルの中のformをリセットします。
「$(this)」は「id=”checkInModal”」つまりモーダル全体という意味で「.find(‘form’)」はモーダルの中のformを探すという意味で「.trigger(‘reset’)」はフォームの中の値を強制的にリセットするという意味です。
これで完成です。