我在输入中一起使用jquery-ui-datepicker.min.js和http://digitalbush.com/projects/masked-input-plugin/:
$("#datepicker").datepicker().mask("99/99/9999");
一起使用它们允许用户使用可视化日期选择器设置日期,或者在屏蔽格式中键入它(/和键入时可以看到_字符)。
但是当用户尝试删除文本并清除输入时,它们会发生冲突。将日期添加到输入后,如果按下DELETE然后按ALT按钮,则会删除已删除的文本。因此,用户无法取消设置由服务器提供或由他自己键入的日期。
我尝试过.mask(“format”,{completed:function}),datepicker的onClose,$()。focusout()事件。没有什么能够捕获文本被删除,并确保它保持这种方式。
答案 0 :(得分:3)
大声笑我修好了!
$("#datepicker").datepicker().mask("99/99/9999");
$("#datepicker").keyup(function(e){
if(46==e.keyCode || 8==e.keyCode || 9==e.keyCode){
var $this = $(this);
if($this.val() == "__/__/____")
$this.val("");
}
});
每次DELETE,BACKSPACE(意味着用户想要删除它)或TAB(意味着用户要离开输入),此代码验证文本是否被删除并且mask()添加了掩码文本,如果是,则清除该文本。< / p>
据我所知,mask()添加了屏蔽文本__/__/____
,以便用户可以键入它,但是当datepicker()看到该文本时,它认为它是一个无效的日期并将其替换为Now ()文字。我的代码拦截它并在datepicker()看到它之前清除该文本大声笑。
还有一个问题,如果用户通过鼠标点击其他地方离开输入,有时问题仍然存在。我可以尝试focusout()或其他东西,但我现在不会尝试。