我正在寻找一种方法来清除包含在 Bootstrap 模式中的HTML 表单中的所有元素,而无需刷新页面。
目前:
用户输入数据并关闭模式。
当用户重新打开 modal 时,之前输入的数据仍然保留。
如何在模态对话框的关闭事件期间完全清除表单中的所有元素,以便当用户重新打开它时,他们总是能获得新鲜的干净输入等?
我正在寻找一种方法来清除包含在 Bootstrap 模式中的HTML 表单中的所有元素,而无需刷新页面。
目前:
用户输入数据并关闭模式。
当用户重新打开 modal 时,之前输入的数据仍然保留。
如何在模态对话框的关闭事件期间完全清除表单中的所有元素,以便当用户重新打开它时,他们总是能获得新鲜的干净输入等?
在 Bootstrap 3 中,您可以在关闭模式窗口后重置表单,如下所示:
$('.modal').on('hidden.bs.modal', function(){
$(this).find('form')[0].reset();
});
您可以创建一个 JavaScript 函数来执行此操作:
$.clearInput = function () {
$('form').find('input[type=text], input[type=password], input[type=number], input[type=email], textarea').val('');
};
然后每次隐藏模式时都可以调用该函数:
$('#Your_Modal').on('hidden', function () {
$.clearInput();
});
我使用了@shibbir 答案的略微修改版本:
// Clear form fields in a designated area of a page
$.clearFormFields = function(area) {
$(area).find('input[type="text"],input[type="email"],textarea,select').val('');
};
这样调用:
$('#my-modal').on('hidden', function(){
$.clearFormFields(this)
});
如果您使用 ajax 以这种方式加载模态的正文并希望能够重新加载它的内容
<a data-toggle="modal" data-target="#myModal" href="./add">Add</a>
<a data-toggle="modal" data-target="#myModal" href="./edit/id">Modify</a>
<div id="myModal" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<!-- Content will be loaded here -->
</div>
</div>
</div>
利用
<script>
$(function() {
$('.modal').on('hidden.bs.modal', function(){
$(this).removeData('bs.modal');
});
});
</script>
隐藏模式时,只需将空值设置为输入字段。
$('#Modal_Id').on('hidden', function () {
$('#Form_Id').find('input[type="text"]').val('');
});
Mark Berry 的回答在这里很好用。我只是添加拆分前面的代码:
$.clearFormFields = function(area) {
$(area).find('input[type="text"],input[type="email"],textarea,select').val('');
};
至:
$.clearFormFields = function(area) {
$(area).find('input#name').val('');
$(area).find('input#phone').val("");
$(area).find('input#email').val("");
$(area).find('select#topic').val("");
$(area).find('textarea#description').val("");
};
这是需要将正文重置为原始内容的差异。它不处理表格,但我觉得它可能有用。如果原始内容是大量 html,则很难将 html 串出并将其存储到变量中。Javascript 不喜欢 VS 2015/任何允许的换行符。因此,我在页面加载时将大量 html 存储在默认模式中,如下所示:
var stylesString = $('#DefaultModal .modal-body').html();
这允许我在按下模式的原始默认按钮时重用此内容(还有其他按钮在同一模式中显示其他内容)。
$("#btnStyles").click(function () {
//pass the data in the modal body adding html elements
$('#DefaultModal .modal-body').html(stylesString);
$('#DefaultModal').modal('show');
})
如果我对 styleString 变量发出警报,它将有一个没有中断的所有 html 的无穷字符串,但它会为我做,并将其排除在 VS 编辑器之外。
这是它在默认模式下的 Visual Studio 中的外观。无论是自动(.html)还是在VS中手动保存在字符串变量中,这将是一大行:
<div class="modal-body" id="modalbody">
<div class="whatdays"><span style="background-color:black;color:white;padding:4px 4px 4px 4px;border:2px solid yellow;">All Styles</span></div>
<div class="whatdays" style="background-image: url('../../Responsive/ballroom.jpg');background-size: 100% 100%;"><span style="background-color:black;color:white;padding:4px 4px 4px 4px;border:2px solid yellow;">Ballroom</span></div>
<div class="whatdays" style="background-image: url('../../Responsive/blues.jpg');background-size: 100% 100%;"><span style="background-color:black;color:white;padding:4px 4px 4px 4px;border:2px solid yellow;">Blues</span></div>
<div class="whatdays" style="background-image: url('../../Responsive/contra.jpg');background-size: 100% 100%;"><span style="background-color:black;color:white;padding:4px 4px 4px 4px;border:2px solid yellow;">Contra</span></div>
<div class="whatdays" style="background-image: url('../../Responsive/countrywestern.jpg');background-size: 100% 100%;"><span style="background-color:black;color:white;padding:4px 4px 4px 4px;border:2px solid yellow;">Country</span></div>
<div class="whatdays" style="background-image: url('../../Responsive/english-country.jpg');background-size: 100% 100%;"><span style="background-color:black;color:white;padding:4px 4px 4px 4px;border:2px solid yellow;">English Country</span></div>
<div class="whatdays" style="background-image: url('../../Responsive/israeli.jpg');background-size: 100% 100%;"><span style="background-color:black;color:white;padding:4px 4px 4px 4px;border:2px solid yellow;">Israeli</span></div>
<div class="whatdays" style="background-image: url('../../Responsive/lindyhop.jpg');background-size: 100% 100%;"><span style="background-color:black;color:white;padding:4px 4px 4px 4px;border:2px solid yellow;">Lindy Hop/Swing</span></div>
<div class="whatdays" style="background-image: url('../../Responsive/miscvariety.jpg');background-size: 100% 100%;"><span style="background-color:black;color:white;padding:4px 4px 4px 4px;border:2px solid yellow;">Misch/Variety</span></div>
<div class="whatdays" style="background-image: url('../../Responsive/neo-square.jpg');background-size: 100% 100%;"><span style="background-color:black;color:white;padding:4px 4px 4px 4px;border:2px solid yellow;">Neo-Square</span></div>
<div class="whatdays" style="background-image: url('../../Responsive/polka.jpg');background-size: 100% 100%;"><span style="background-color:black;color:white;padding:4px 4px 4px 4px;border:2px solid yellow;">Polka</span></div>
<div class="whatdays" style="background-image: url('../../Responsive/salsa.jpg');background-size: 100% 100%;"><span style="background-color:black;color:white;padding:4px 4px 4px 4px;border:2px solid yellow;">Salsa</span></div>
<div class="whatdays" style="background-image: url('../../Responsive/scottish.jpg');background-size: 100% 100%;"><span style="background-color:black;color:white;padding:4px 4px 4px 4px;border:2px solid yellow;">Scottish</span></div>
<div class="whatdays" style="background-image: url('../../Responsive/square.jpg');background-size: 100% 100%;"><span style="background-color:black;color:white;padding:4px 4px 4px 4px;border:2px solid yellow;">Square</span></div>
<div class="whatdays" style="background-image: url('../../Responsive/tango.jpg');background-size: 100% 100%;"><span style="background-color:black;color:white;padding:4px 4px 4px 4px;border:2px solid yellow;">Tango</span></div>
<div class="whatdays" style="background-image: url('../../Responsive/waltz.jpg');background-size: 100% 100%;"><span style="background-color:black;color:white;padding:4px 4px 4px 4px;border:2px solid yellow;">Waltz</span></div>
<div class="whatdays" style="background-image: url('../../Responsive/wcswing.jpg');background-size: 100% 100%;"><span style="background-color:black;color:white;padding:4px 4px 4px 4px;border:2px solid yellow;">WCS</span></div>
<div class="whatdays" style="background-image: url('../../Responsive/zyedeco-gator.jpg');background-size: 100% 100%;"><span style="background-color:black;color:white;padding:4px 4px 4px 4px;border:2px solid yellow;">Zydeco/Cajun</span></div>
只需在打开之前找到您的表格并清除!
$modal = $('#modal');
$modal.find('form')[0].reset();
以下解决方案解决了我的问题并保留了默认值
$('body').on('hidden.bs.modal', '.modal', function () {
$(this).find('input[type="text"],input[type="email"],textarea,select').each(function() {
if (this.defaultValue != '' || this.value != this.defaultValue) {
this.value = this.defaultValue;
} else { this.value = ''; }
});
});