我试图使用BS模式来呈现一个带有选择框的表单,并最终通过ajax调用更新DB中的记录。打开modal的触发器btn是一组
HTML
<tr>
<td>
<span class="spanClassStatus">
Missed
</span>
<span class="wrapperSpan">
<i class="btn itagbtn" data-classschid="1" data-toggle="modal" data-target="#ModalUpdateClassStatus"></i>
</span>
</td>
</tr>
<tr>
<td>
<span class="spanClassStatus">
Taken
</span>
<span class="wrapperSpan">
<i class="btn itagbtn" data-classschid="2" data-toggle="modal" data-target="#ModalUpdateClassStatus"></i>
</span>
</td>
</tr>
<!-- Modal -->
<div class="modal fade" id="ModalUpdateClassStatus" tabindex="-1" role="dialog" aria-labelledby="modalLabelClassStatus">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="modalLabelClassStatus">Update Class Status</h4>
<button type="button" class="close d-block text-danger" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
</div>
<div class="modal-body">
<form action="#" method="POST" id="modalForm">
<div class="">
<small>Select a new status for this class</small>
<select name="selected_status_id" id="selected_status_id" required="required">
<option value="" selected="selected">Choose an item</option>
<option value="taken">Taken</option>
<option value="missed">Missed</option>
</select>
</div>
<i class="fa fa-spinner fa-pulse fa-3x fa-fw text-primary d-none" id="statusSpinner"></i>
<span class="sr-only">Please wait ...</span>
<button type="submit" id="editClassStatusBtn" class="btn btn-success mt-2" style="font-size:0.9rem;">Update Status</button>
</form>
</div> <!-- end of modal-body -->
</div>
</div>
</div>
JAVASCRIPT
<script>
$( document ).ready(
function(){
$('#ModalUpdateClassStatus').on('submit', function(e){
e.preventDefault();
const itagTriggers=document.querySelectorAll('i[data-classschid]');
itagTriggers.forEach(itag => {
var class_sch_id = itag.getAttribute('data-classschid');
var selected_status_id = $('#selected_status_id').val();
var statusSpinner = $('#statusSpinner');
var spanClassStatus = $(itag).parent().siblings('.spanClassStatus');
statusSpinner.removeClass('d-none');
$('#editClassStatusBtn').prop('disabled', true);
var url = "{{ path('class_schedule_tch_status_update')|escape('js') }}";
var type = "POST";
$.ajax({
url : url,
type: type,
data : {
'selected_status_id': selected_status_id,
'class_sch_id': class_sch_id
},
success: function(returnedMsg) {
if (returnedMsg['status'] == "success") {
$(spanClassStatus).text(returnedMsg['msg']);
}
else if(returnedMsg['status'] == "error"){
//error stuff
}
else{
//unknown error
}
}
});
})
});
});
</script>
无论何时单击i
标记,您都可以将data attr
值保存在隐藏输入中,然后使用此隐藏输入值传递给ajax调用,以引用单击了i
标记的当前tr
。
演示代码:
//on click of itag
$(".itagbtn").on("click", function() {
$("[name=classschid]").val($(this).data("classschid")) //add value to hidden input inside modal
})
$('#ModalUpdateClassStatus').on('submit', function(e) {
e.preventDefault();
var class_sch_id = $("[name=classschid]").val(); //get itag value
var selected_status_id = $('#selected_status_id').val();
var statusSpinner = $('#statusSpinner');
var spanClassStatus = $("i[data-classschid=" + class_sch_id + "]").parent().siblings('.spanClassStatus'); ///use it here as well
console.log(class_sch_id)
statusSpinner.removeClass('d-none');
/*$('#editClassStatusBtn').prop('disabled', true);
var url = "{{ path('class_schedule_tch_status_update')|escape('js') }}";
var type = "POST";
$.ajax({
url: url,
type: type,
data: {
'selected_status_id': selected_status_id,
'class_sch_id': class_sch_id
},
success: function(returnedMsg) {
if (returnedMsg['status'] == "success") {*/
$(spanClassStatus).text("ok ok"); //returnedMsg['msg']
/*} else if (returnedMsg['status'] == "error") {
//error stuff
} else {
//unknown error
}
}
});*/
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<table>
<tr>
<td>
<span class="spanClassStatus">
Missed
</span>
<span class="wrapperSpan">
<i class="btn itagbtn" data-classschid="1" data-toggle="modal" data-target="#ModalUpdateClassStatus">Click</i>
</span>
</td>
</tr>
<tr>
<td>
<span class="spanClassStatus">
Taken
</span>
<span class="wrapperSpan">
<i class="btn itagbtn" data-classschid="2" data-toggle="modal" data-target="#ModalUpdateClassStatus">Click</i>
</span>
</td>
</tr>
<table>
<!-- Modal -->
<div class="modal fade" id="ModalUpdateClassStatus" tabindex="-1" role="dialog" aria-labelledby="modalLabelClassStatus">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="modalLabelClassStatus">Update Class Status</h4>
<button type="button" class="close d-block text-danger" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
</div>
<div class="modal-body">
<form action="#" method="POST" id="modalForm">
<div class="">
<small>Select a new status for this class</small>
<select name="selected_status_id" id="selected_status_id" required="required">
<option value="" selected="selected">Choose an item</option>
<option value="taken">Taken</option>
<option value="missed">Missed</option>
</select>
<!--added this hidden input-->
<input type="hidden" name="classschid">
</div>
<i class="fa fa-spinner fa-pulse fa-3x fa-fw text-primary d-none" id="statusSpinner"></i>
<span class="sr-only">Please wait ...</span>
<button type="submit" id="editClassStatusBtn" class="btn btn-success mt-2" style="font-size:0.9rem;">Update Status</button>
</form>
</div>
<!-- end of modal-body -->
</div>
</div>
</div>
问题内容: 我使用Formkeep制作表单,使用AJAX向其服务器提交电子邮件。我遇到的问题是,如何使用AJAX成功发送电子邮件地址时弹出一个引导模式,说“谢谢”。 这是运行AJAX的脚本。 我是AJAX请求的初学者,因此将非常感谢您的帮助。 谢谢 问题答案: 完成回叫后,添加: 并确保您的模态具有类似的属性:
问题内容: 我希望用户能够单击表,并根据他们单击的行-它会用与该行相关的内容(MYSQL查询)填充模式,并打开模式。 我尝试执行以下操作:-加载表内容-使用jQuery单击表时-使用AJAX通过单击的行信息发布到PHP文件-使用行信息执行MYSQL查询- 填充具有收集的内容的模态-打开模态 我遇到的问题是,因为这是一条MYSQL语句,并且该函数是非阻塞的,所以在模式开始打开时尚未声明变量。Web编
问题内容: 我正在使用MVC 4和Entity Framework开发Intranet Web应用程序。我有一个可以通过编辑操作进行修改的人员列表。我想通过使用模式形式使我的应用程序更加动态。所以我试图将编辑视图放入Bootstrap模态,对此我有两个问题: 我应该使用简单视图还是局部视图? 我如何执行验证(实际上它可以工作,但会将我重定向到我的原始视图,因此不以模式形式出现) 我认为我必须使用A
问题内容: 我知道它已经被讨论过很多次了,大多数文章都引用了以下代码:AngularJS中带有自定义URL的模态窗口 但是我就是不明白。我根本看不出来。我还发现这个jsfiddle实际上很棒,非常有帮助,除了它不添加url并允许我使用后退按钮关闭模式。 编辑:这是我需要帮助。 因此,让我尝试解释我要实现的目标。 我有一个添加新项目的表格,并且有一个“添加新项目”链接。我想当我单击“添加新项目”时,
下面是我试图实现的目标的简要描述:我有一个高级搜索按钮,可以在输入字段上打开一个列表并选择。我必须用数据库中的选项自动填充选择项,所以我必须以某种方式从那里获取数据。 因为我不想在不需要的时候加载页面中的所有数据,所以我想在用户单击高级搜索的模式按钮时使用AJAX来获取数据。 我尝试使用以下代码来实现这一点,但实际上什么都没有发生: 视图: 我试图使用Ajax达到的控制器: 模型没那么重要,因为它
我已经建立了一个网页,它有一个顶部固定的导航栏和一个带有分页的CRUD数据表,其中有打开模态的按钮。我似乎遇到的问题是,当我单击“删除”按钮时,模式会弹出,我可以删除记录,但是模式不会关闭,除非我单击模式之外的其他位置,并将“显示12个中的10个”的总记录添加到其中,直到我刷新页面,然后显示正确的值我在下面包含了我所有的代码。我不知道如何解决这个问题,任何援助都将不胜感激。