我如何*完全*删除jQuery UI datepicker?

Gro*_*oxx 61 jquery-ui datepicker

我有一个日期文本字段,我希望有时只附加一个DatePicker,因为我有一些自己的文本处理脚本来处理部分日期字符串.但是,调用.remove或.destroy会在输入字段上保留文本格式化行为,这会将我的"8"字符串转换为"8/18/2010".更糟糕的是,如果我开始删除,它坚定地认为,一旦我达到"8/18/20",我实际上想要"8/18/2020".

什么是最好的方式完全,完全,使它像从未删除我的页面中的datepicker?我也可以使用它,如果它只是忽略我在任何时候完全输入的文本,但在这种情况下,我更喜欢它出现在双击/图像按钮,而不是总是.

编辑:

这都在jqGrid中,其中'selector'是日期列上的文本框:

function showPicker(selector) {
    $(selector).datepicker({
        onClose: function() {
            $(selector).datepicker('remove'); 
            // or 'destroy' or $('.datepicker').remove(); or $(this).datepick('remove');
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

这可以防止它返回,但不能操纵我的文本字段.没有其他代码(我知道)正在操纵该字段的内容,只是jqGrid正在监视输入密钥以发送数据.查看页面生成的代码,datepicker div甚至仍然位于底部.

edit2:如果我这样做,我会得到完全相同的行为:

<html>
<body>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.js"></script>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"  />
<script type="text/javascript">
$(document).ready( function(){
 $("#pickle").datepicker({
  onClose: function(){
   $(this).datepicker('remove');
  }
 });
});
</script>
<input type="text" id="pickle" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这导致了与我所看到的相同的行为,但将其更改为"destroy" 在这里工作但不在我的页面上.奇.

Oma*_*mar 119

.datepicker完全删除:

$( selector ).datepicker( "destroy" );
$( selector ).removeClass("hasDatepicker").removeAttr('id');
Run Code Online (Sandbox Code Playgroud)

文档:
http : //docs.jquery.com/UI/Datepicker#method-destroy
也阅读下面的评论

  • 为什么第二行用于?显然,销毁会在此初始状态下重新输入输入 (5认同)
  • @GregoryR.`removeAttr('id')`是错误的,应该删除,因为id与datepicker无关,如果你依赖`id`,你将无法将其设置回来. (3认同)
  • @ eka808第一行只禁用日期选择器,但它仍然在你的DOM中.第二行负责处理. (2认同)

小智 8

我通过删除datepicker类然后在绑定到datepicker的元素上调用unbind方法来解决问题.这似乎摆脱了它!

例如:

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

/////////datepicker attached to myelement//////
Run Code Online (Sandbox Code Playgroud)

然后:

$('#myelement').removeClass('calendarclass');
$('#myelement').removeClass('hasDatepicker');
$('#myelement').unbind();
Run Code Online (Sandbox Code Playgroud)

只是删除类仍然让输入元素在单击时调用datepicker.可能unbind()它本身就可以完成这项工作,但我有点像带状括号.