bootstrap 模态在关闭后进入初始 UI 状态
bootstrap modal get to initial UI state after close
我正在使用 Bootstrap 3 模式。我在模式中有一个文本输入,单击 link 将在第一个文本输入字段下方创建新的文本输入字段,最多 4 个字段。我的代码工作正常,它创建了更多的输入字段。
但是,当我关闭模式并再次打开它时,根据我之前单击 link 的次数,会出现多个输入文本字段。我不希望发生这种情况 - 当我关闭模态并再次打开它时,我只想看到一个输入文本字段(初始状态)并且看不到模态中 DOM 的更改。这可能吗?
您想根据 BOotstrapJavascript 文档 here
使用 hide.bs.modal 事件
首先,我将向所有输入元素和新呈现的 div 元素添加一个 class clearAfterClose 用于输入,并为 div 元素添加 hideAfterClose。然后我将我的 Jquery 函数创建为:
$('#myModal').on('hide.bs.modal', function(e) {
$('.clearAfterClose').val('');
$('.hideAfterClose').hide();
})
每当隐藏模态并使用 clas clearAfterClose 清除所有输入元素并使用 clas 隐藏所有 div 时,这将触发hideAfterClose。
我创建了一个用于演示的 codepen here
它会一直存在,因为您正在编辑 HTML。在您刷新页面或自己将其设置回之前,模态框不会返回到其原始状态。只需清空容器,然后在关闭模式时再次添加第一个输入。注意“$('div#myModal').on('hidden.bs.modal'”事件块上发生的事情。
你的JS(我重构了你的原始代码)
$('#additional-fields').on('click', function () {
var emailInputList = $('div.email-input-list'),
itemCount = emailInputList.children().length,
newItem = $('<div class="form-group"><label for="txtFriendEmail' + itemCount + '" class="sr-only">Email</label><input type="text" class="form-control" placeholder="Email" id="txtFriendEmail' + itemCount + '"></div>');
if (itemCount < 4) {
emailInputList.append(newItem);
}
});
$('div#myModal').on('hidden.bs.modal', function () {
$('div.email-input-list').empty().append($('<div class="form-group"><label for="txtFriendEmail0">Email</label><input type="text" class="form-control" placeholder="Email" id="txtFriendEmail0"></div>'));
});
你的HTML
<a href="#myModal" role="button" class="btn btn-default" data-toggle="modal">Launch demo modal</a>
<div id="myModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Modal header</h3>
</div>
<div class="modal-body">
<div class="form-group clearfix" id="input-array">
<div class="row">
<div class="col-sm-6 email-input-list">
<div class="form-group">
<label for="txtFriendEmail0">Email</label>
<input type="text" class="form-control" placeholder="Email" id="txtFriendEmail0">
</div>
</div>
<div class="col-sm-5">
<p class="form-group-input-helper"><a href="javascript:void(0);" id="additional-fields">Add another friend's email</a></p>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
<button class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
我正在使用 Bootstrap 3 模式。我在模式中有一个文本输入,单击 link 将在第一个文本输入字段下方创建新的文本输入字段,最多 4 个字段。我的代码工作正常,它创建了更多的输入字段。
但是,当我关闭模式并再次打开它时,根据我之前单击 link 的次数,会出现多个输入文本字段。我不希望发生这种情况 - 当我关闭模态并再次打开它时,我只想看到一个输入文本字段(初始状态)并且看不到模态中 DOM 的更改。这可能吗?
您想根据 BOotstrapJavascript 文档 here
使用 hide.bs.modal 事件首先,我将向所有输入元素和新呈现的 div 元素添加一个 class clearAfterClose 用于输入,并为 div 元素添加 hideAfterClose。然后我将我的 Jquery 函数创建为:
$('#myModal').on('hide.bs.modal', function(e) {
$('.clearAfterClose').val('');
$('.hideAfterClose').hide();
})
每当隐藏模态并使用 clas clearAfterClose 清除所有输入元素并使用 clas 隐藏所有 div 时,这将触发hideAfterClose。 我创建了一个用于演示的 codepen here
它会一直存在,因为您正在编辑 HTML。在您刷新页面或自己将其设置回之前,模态框不会返回到其原始状态。只需清空容器,然后在关闭模式时再次添加第一个输入。注意“$('div#myModal').on('hidden.bs.modal'”事件块上发生的事情。
你的JS(我重构了你的原始代码)
$('#additional-fields').on('click', function () {
var emailInputList = $('div.email-input-list'),
itemCount = emailInputList.children().length,
newItem = $('<div class="form-group"><label for="txtFriendEmail' + itemCount + '" class="sr-only">Email</label><input type="text" class="form-control" placeholder="Email" id="txtFriendEmail' + itemCount + '"></div>');
if (itemCount < 4) {
emailInputList.append(newItem);
}
});
$('div#myModal').on('hidden.bs.modal', function () {
$('div.email-input-list').empty().append($('<div class="form-group"><label for="txtFriendEmail0">Email</label><input type="text" class="form-control" placeholder="Email" id="txtFriendEmail0"></div>'));
});
你的HTML
<a href="#myModal" role="button" class="btn btn-default" data-toggle="modal">Launch demo modal</a>
<div id="myModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Modal header</h3>
</div>
<div class="modal-body">
<div class="form-group clearfix" id="input-array">
<div class="row">
<div class="col-sm-6 email-input-list">
<div class="form-group">
<label for="txtFriendEmail0">Email</label>
<input type="text" class="form-control" placeholder="Email" id="txtFriendEmail0">
</div>
</div>
<div class="col-sm-5">
<p class="form-group-input-helper"><a href="javascript:void(0);" id="additional-fields">Add another friend's email</a></p>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
<button class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>