datepicker()和mask()之间的jQuery冲突

datepicker()和mask()之间的jQuery冲突,jquery,datepicker,mask,Jquery,Datepicker,Mask,我正在使用jquery-ui-datepicker.min.js,并将其组合在一个输入中: $(“#datepicker”).datepicker().mask(“99/99/9999”) 同时使用它们,用户可以使用可视日期选择器设置日期,也可以在屏蔽格式中键入日期(/和u字符在键入时可见) 但当用户试图删除文本并清除输入时,它们是相互冲突的。在输入中添加日期后,如果按DELETE和ALT按钮,则删除的文本将返回。因此,用户无法取消设置由服务器提供或自己键入的日期 我尝试过.mask(“form

我正在使用jquery-ui-datepicker.min.js,并将其组合在一个输入中:

$(“#datepicker”).datepicker().mask(“99/99/9999”)

同时使用它们,用户可以使用可视日期选择器设置日期,也可以在屏蔽格式中键入日期(/和u字符在键入时可见)

但当用户试图删除文本并清除输入时,它们是相互冲突的。在输入中添加日期后,如果按DELETE和ALT按钮,则删除的文本将返回。因此,用户无法取消设置由服务器提供或自己键入的日期

我尝试过.mask(“format”,{completed:function})、datepicker的onClose、$().focusout()事件。任何东西都无法捕获已删除的文本,并确保它保持这种方式。

哈哈,我修复了它

    $("#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("");
        }
    });
每次删除、退格(表示用户要删除它)或制表符(表示用户要离开输入)时,此代码都会验证文本是否已删除,掩码()是否添加了掩码文本,如果是,则清除该文本

正如我所理解的,mask()添加了屏蔽文本
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。我的代码在datepicker()看到它之前拦截它并清除该文本

仍然存在一个问题,如果用户通过鼠标单击其他位置来保留输入,那么问题有时仍然会发生。我可以试试focusout()之类的,但我现在不想试试。

哈哈,我修好了

    $("#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("");
        }
    });
每次删除、退格(表示用户要删除它)或制表符(表示用户要离开输入)时,此代码都会验证文本是否已删除,掩码()是否添加了掩码文本,如果是,则清除该文本

正如我所理解的,mask()添加了屏蔽文本
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。我的代码在datepicker()看到它之前拦截它并清除该文本


仍然存在一个问题,如果用户通过鼠标单击其他位置来保留输入,那么问题有时仍然会发生。我可以尝试focusout()或其他方法,但现在不尝试。

Datepicker
已经提供了格式化日期的方法。你为什么要用
mask
把它搞砸呢?你能不能提供,然后用fiddle或者我们的答案只能基于假设。
Datepicker
已经提供了格式化日期的方法。你为什么要用
面具
把事情搞砸呢?你能不能提供一些信息,然后摆弄一下,否则我们的答案只能基于假设。