模态框中DateRangePicker点击输入框弹窗关闭问题及parentE1参数咨询
问题描述
我有一个带日历按钮的输入文本框,该控件位于jQuery弹出的模态对话框(modal dialog box)中。日历文本框的前端脚本使用了如下配置代码:
$('.daterangepicker').daterangepicker({ singleDatePicker: true, showDropdowns: true, autoUpdateInput: true, parentE1: '#modaldialogid' });
注:原配置存在拼写错误,parentE1应为parentEl
问题:点击日历控件旁的输入文本框时,模态对话框会关闭,但点击日历按钮时无此问题,可正常弹出日历下拉框。怀疑该问题由parentEl参数中带#的ID格式导致,咨询如何不带#指定输入框ID。
解决方案
- 通过原生DOM方法获取元素传入
直接使用document.getElementById获取目标模态框的DOM元素,无需带#,直接传入parentEl参数:
$('.daterangepicker').daterangepicker({ singleDatePicker: true, showDropdowns: true, autoUpdateInput: true, parentEl: document.getElementById('modaldialogid') });
- 通过jQuery对象转换为DOM元素传入
如果习惯用jQuery选择器,可先获取jQuery对象,再取其第一个DOM元素传入(同样无需带#):
$('.daterangepicker').daterangepicker({ singleDatePicker: true, showDropdowns: true, autoUpdateInput: true, parentEl: $('#modaldialogid')[0] });
补充说明:原配置里的parentE1是拼写错误,正确参数名是parentEl,这个错误也可能导致父容器绑定异常。当parentEl正确指定模态框为父容器后,日历控件会挂载在模态框内部,避免点击输入框时触发模态框的外部点击关闭逻辑,从而解决模态框意外关闭的问题。
内容的提问来源于stack exchange,提问作者Aruna Gopalakrishnan
相关产品推荐
相关产品推荐

