我有一个日期文本字段我希望只有有时附加一个DatePicker,因为我有一些我自己的文本处理脚本处理部分日期字符串。然而,调用.remove或.destroy在输入字段中留下文本格式化行为,它将我的“8”字符串转换为“8/18/2010”。更糟糕的是,如果我开始删除,它坚定地假设,一旦我达到“8/18/20”,我实际想要“8/18/2020”。
从我的页面中删除datepicker是什么将是完全,完全,make-it-like – 从来没有最好的方法?我也可以使用它,如果它只是忽略我完全输入的文本,在这种情况下,我更喜欢它出现在双击/图像作为按钮,而不是总是。
编辑:
这都在一个jqGrid,其中’selector’是日期列上的文本框:
function showPicker(selector) { $(selector).datepicker({ onClose: function() { $(selector).datepicker('remove'); // or 'destroy' or $('.datepicker').remove(); or $(this).datepick('remove'); } }); }
这防止它回来,但不是从操纵我的文本字段。没有其他代码(我知道)正在操作该字段的内容,只是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>
这导致与我看到的相同的行为,但更改为“毁灭”在这里工作,但不是在我的页面。奇。
解决方法
这会删除.datepicker完全:
$( selector ).datepicker( "destroy" ); $( selector ).removeClass("hasDatepicker").removeAttr('id');
文档:
http://docs.jquery.com/UI/Datepicker#method-destroy也阅读下面的意见