You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

下拉框切换时datetimepicker组件添加成功但无法移除,求助

问题:切换下拉选项时无法移除datetimepicker组件

我尝试通过以下代码在事件切换时添加和移除datetimepicker组件。该组件能在下拉框切换事件中成功添加,但在else分支中无法移除。能否有人帮忙解决此问题?

代码如下:

function showoption(obj) {
 if (obj.value == "date") {
 $('#txtval').datetimepicker({
 weekStart: 1,
 todayBtn: 1,
 autoclose: 1,
 todayHighlight: 1,
 startView: 2,
 forceParse: 0,
 showMeridian: 1,
 pickerPosition: "bottom-left",
 startDate: new Date()
 });
 } else {
 $('#txtval').datetimepicker("destroy...");
 }
}

解决方案

嘿,我一眼就瞅出问题所在啦!你在else分支里调用销毁方法的时候多写了三个点——"destroy..."是错误的写法,正确的方法名应该是"destroy",没有多余的省略号。

先给你修正后的代码:

function showoption(obj) {
 if (obj.value == "date") {
 $('#txtval').datetimepicker({
 weekStart: 1,
 todayBtn: 1,
 autoclose: 1,
 todayHighlight: 1,
 startView: 2,
 forceParse: 0,
 showMeridian: 1,
 pickerPosition: "bottom-left",
 startDate: new Date()
 });
 } else {
 // 去掉多余的三个点,使用正确的destroy方法
 $('#txtval').datetimepicker("destroy");
 }
}

另外,给你提个实用小建议:为了避免用户反复切换选项时,重复初始化组件导致的奇怪异常,最好在初始化前先销毁可能存在的实例,比如这样优化:

function showoption(obj) {
 if (obj.value == "date") {
 // 先销毁旧实例,再创建新的,防止重复绑定事件或组件冲突
 $('#txtval').datetimepicker("destroy").datetimepicker({
 weekStart: 1,
 todayBtn: 1,
 autoclose: 1,
 todayHighlight: 1,
 startView: 2,
 forceParse: 0,
 showMeridian: 1,
 pickerPosition: "bottom-left",
 startDate: new Date()
 });
 } else {
 $('#txtval').datetimepicker("destroy");
 }
}

这样不管用户切换多少次选项,组件都能稳定工作,不会出现初始化多次导致的异常情况~

内容的提问来源于stack exchange,提问作者vinit agrawal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:05:40