传递数据以填充在ajax Modal中加载的输入字段
Pass data through to fill input fields loaded in ajax Modal
在一个页面上,我有一个按钮,可以使用以下代码打开ajax模式<button onclick="showAjaxModalcal('<?php echo base_url();?>index.php?modal/popup/add_appointment','09-15-2019');"
ajax模式的脚本如下
<script type="text/javascript">
function showAjaxModalcal(url,data)
{
// SHOWING AJAX PRELOADER IMAGE
jQuery('#modal_ajax .modal-body').html('<div style="text-align:center; margin-top:200px;"><img src="assets/images/preloader.gif" style="height:25px;" /></div>');
// LOADING THE AJAX MODAL
jQuery('#modal_ajax').modal('show', {backdrop: 'true'});
// SHOW AJAX RESPONSE ON REQUEST SUCCESS
$.ajax({
url: url,
data: {date_timestamp:data},
success: function(response)
{
jQuery('#modal_ajax .modal-body').html(response);
//window.scrollTo(0, 0);
$('html, body').animate({ scrollTop: 0 }, 'fast');
}
});
}
</script>'
模态包含一个名为的输入文件<input type="text" name="date_timestamp" id="date_timestamp" class="form-control datepicker" data-format="d-m-yyyy" placeholder="">
我试图实现的是,当ajax模态以值09-15-2019打开时,自动填充此输入字段。日期并不总是一样的。
问题是,通过下面的代码,我得到"NetworkError: 400 Bad Request - http://**************/index.php?modal/popup/add_appointment&date_timestamp=09-15-2019"
如果我理解正确,您希望在模态显示时将date
传递给模态输入,因为date
和模态HTML都在同一页上。
最简单的解决方案
使用bootstrap模式事件侦听器和数据属性,让bootstrap为您的做腿部工作
具有数据属性data-date
的模式调用按钮(日期可以是动态的,可以是任何值)
<button data-toggle="modal" data-modal="#modal_ajax" data-date="09-15-2019">Whatever</button>
事件侦听器脚本
$(document).ready(function(){
$('#modal_ajax').on('show.bs.modal', function (e) {
var date = $(e.relatedTarget).data('date');
$("#date_timestamp").val(date);
});
});
注:去掉onclick="showAjaxModalcal()
功能
您的方法
从模式触发按钮中删除url
<button onclick="showAjaxModalcal('09-15-2019');">whatever</button>
并在Script中摆脱Ajax
方法
<script type="text/javascript">
function showAjaxModalcal(data) {
alert(data);
// SHOWING AJAX PRELOADER IMAGE
$('#modal_ajax .modal-body').html('<div style="text-align:center; margin-top:200px;"><img src="assets/images/preloader.gif" style="height:25px;" /></div>');
$('#modal_ajax').modal({
backdrop: 'true'
}).on('shown.bs.modal', function() {
alert(data);
$("#date_timestamp").val(data);
});
}
</script>
旁注:在Ajax
方法中,没有输入定义来填充日期
success: function(response){
jQuery('#modal_ajax .modal-body').html(response);
//window.scrollTo(0, 0);
$('html, body').animate({ scrollTop: 0 }, 'fast');
}
Fiddle
- Ajax文件加载和<输入>文件加载
- 如果图像标记是用javascript编写的,并且需要用户输入,那么图像不会随页面加载吗
- 在Chrome中重新加载页面后清除表单输入值
- 向使用jQuery加载DOM后添加的字段添加不受限制的文本输入DatePickers
- 如何使用输入数据加载新的extjs图表
- 输入上的键控事件在页面加载时触发
- Selectize.js:如何将数据库中已经选择的标签预加载到输入字段(Meteor&MongoDB/JSON)
- 如何在页面加载时直接使用Javascript在输入字段中填写数据
- HTML5范围输入重新加载
- 将从服务器获取的数据加载到输入文本表单中
- 验证嵌套在ng中的输入元素repeat也用于页面加载,而不仅仅用于更改
- 使用回调函数时,加载会覆盖输入文本框
- 在Meteor中加载带有采集数据的选择输入字段
- 无法为动态加载的输入框加载日期选择器和小部件
- 当在ng重复中使用ng模型时,在页面加载时角度输入不为空
- 单击时动态加载输入字段
- 加载输入文件字段
- 使用本地存储保存和加载输入值
- Javascript保存、擦除和重新加载输入值
- 预加载输入类型图像