清除 bootstrap-datepicker 的值

Posted

技术标签:

【中文标题】清除 bootstrap-datepicker 的值【英文标题】:Clear the value of bootstrap-datepicker 【发布时间】:2014-04-07 10:00:34 【问题描述】:

我从这里使用 bootstrap-datepicker:https://github.com/eternicode/bootstrap-datepicker

版本:2.3.2

单击按钮时,我无法清除日期选择器的日期值。我检查了 API,但在清除/重置日期选择器时找不到任何东西。欢迎任何帮助

【问题讨论】:

【参考方案1】:

您可以使用 jQuery 清除日期输入的值。

例如有一个按钮和一个像这样的文本输入:

<input type="text" id="datepicker">
<button id="reset-date">Reset</button>

你可以使用jQuery的.val()函数。

$("#reset-date").click(function()
    $('#datepicker').val("").datepicker("update");
)

【讨论】:

这个技巧不会清除 startdate endate 限制,这是由 setStartDate,setEndDate 选项设置的 我认为您可以使用不带参数的 setStartDate 和 setEndDate 方法来清除限制。 bootstrap-datepicker.readthedocs.org/en/release/… 这不是正确的答案 这不会清除日期。您可以在控制台上使用它进行检查。 $("#datepicker").datepicker("getDate") 仍然给出之前选择的日期。您需要将.datepicker('update') 传递到末尾,如下面的答案所示。【参考方案2】:

我遇到了类似的问题,以下对我有用:

$('#datepicker').val('').datepicker('update');

这两个方法调用都需要,否则不清楚。

【讨论】:

这对我有用。请注意,“更新”会触发另一个“更改日期”事件。 这是比公认的更好的解决方案 :)【参考方案3】:

当前版本 1.4.0 有 clearBtn option:

$('.datepicker').datepicker(
    clearBtn: true
);

除了向界面添加按钮外,它还允许手动从输入框中删除值。

【讨论】:

这是 clearBtn: true 添加到日期选择器中的清除按钮,对吗? 由于某种原因,清除按钮的样式对我来说被破坏了。 是的,这对我有用..谢谢! 除非我遗漏了一些你不能真正使用它从输入框中手动删除的东西。删除文本会触发“clearDate”事件,但按钮会触发“clearDate”和“changeDate”。所以对我来说问题是按下按钮会触发我的事件回调两次。【参考方案4】:

我在尝试清除已设置的日期时遇到了这个帖子。尝试:

$('#datepicker').val('').datepicker('update');

制作:

TypeError: t.dpDiv is undefined 
https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js -- Line 8

认为可能需要包含original Datepicker for bootstrap 会消除错误,但随后会导致原始的 Datepicker 小部件出现! - 所以这显然是错误的,不需要。

进一步看,jqueryui中的crash在:

    /* Generate the date picker content. */
_updateDatepicker: function(inst) 
    this.maxRows = 4; //Reset the max number of rows being displayed (see #7043)
    datepicker_instActive = inst; // for delegate hover events
    inst.dpDiv.empty().append(this._generatehtml(inst));
    this._attachHandlers(inst);

并且 inst.pdDiv 不存在。

进一步调查 - 我意识到需要的是:

        $formControl = $duedate.find("input");
        $formControl.val('');
        $formControl.removeData();

这解决了我的问题。注意我还需要 $formControl.removeData() 否则小部件的状态不会重新初始化为初始状态。

我希望这对其他人有所帮助。 :-)

【讨论】:

嘿,我遇到了同样的错误,也为此实施了同样的解决方案,但无法成功。是否有任何 jquery/bootstrap 版本问题?是否有任何特定的块可以放置此代码? 但是,如果尝试获取日期值,例如 var datevalue = $('#datepikcercontrol').data('date');仍然会给出之前选择的日期值,上面的解决方案读取数据这种方式对我有用 var datevalue = $("#datepikcercontrol").find("input").val(); 这会从 DOM 中完全删除输入字段,并且无法进一步选择日期范围 我在尝试同样的事情并得到同样的错误。这对我有用,谢谢。【参考方案5】:

其实使用库自带的方法更有用$(".datepicker").datepicker("clearDates");

我建议您始终查看该库的文档,这是我用于此的文档。

bootstrap-datepicker methods documentation

【讨论】:

【参考方案6】:

您可以使用此语法来重置您的引导日期选择器

$('#datepicker').datepicker('update','');

参考http://bootstrap-datepicker.readthedocs.org/en/latest/methods.html#update

【讨论】:

【参考方案7】:

我知道现在回答为时已晚,但在我的场景中,下面的代码不起作用。

 $('#datepicker').val("");
 $('#datepicker').val('').datepicker('update');
 $('#datepicker').datepicker('update','');

这是我的解决方案。

 $('#datepicker').val('').datepicker('remove').datepicker();

我先清除了 datepicker 的值,然后删除了 datepicker 并再次重新初始化 datepicker。它解决了我的问题。

【讨论】:

【参考方案8】:

我找到了最好的答案,它对我有用。 清除bootstrap-datepicker的值:

$('#datepicker').datepicker('setDate', null);

为 boostrap-datepicker 添加值:

$('#datepicker').datepicker('setDate', datePicker);

【讨论】:

【参考方案9】:

我在试图弄清楚为什么 IE7/IE8 中的日期没有被清除时遇到了这个帖子。 这与 IE8 和更早版本需要 Array.prototype.splice() 方法的第二个参数这一事实有关。 这是 bootstrap.datepicker.js 中的原始代码:

clear: function()
    this.splice(0);
,

添加第二个参数解决了我的问题:

clear: function()
    this.splice(0,this.length);
,

【讨论】:

【参考方案10】:

你必须这样做:

$('#datepicker').datepicker('clearDates');

【讨论】:

以上是关于清除 bootstrap-datepicker 的值的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap-datepicker 位于页面的左上角

bootstrap-datepicker 全局设置语言

如何使用 bootstrap-datepicker 更新多个输入

滚动模式时,bootstrap-datepicker 不滚动

日期 bootsrtap-datatimepicker and bootstrap-datepicker 控件支持中文

使用带有 HTMX 的 bootstrap-datepicker