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

标签 jquery datepicker mask

我正在使用 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() 事件。没有任何方法可以捕获已删除的文本并确保其保持原样。

最佳答案

哈哈,我修好了!

    $("#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() 添加了掩码文本,如果是,则清除该文本。

据我所知, mask() 添加了屏蔽文本 __/__/____ 以便用户可以在其上键入,但是当 datepicker() 看到该文本时,它认为它是无效日期并替换它与 Now() 文本。我的代码拦截它并在 datepicker() 看到它之前清除该文本,哈哈。

还有一个问题,如果用户通过鼠标单击其他地方来离开输入,有时仍然会出现该问题。我可以尝试 focusout() 或者其他什么,但我现在不会尝试。

关于datepicker() 和 mask() 之间的 jQuery 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18512199/

相关文章:

进行操作时的 ExtJS 掩码面板

python - 将RGB白色设置为透明?

javascript - jQuery 自动完成返回整个数组而不是搜索值

javascript - 为什么调用失败后无法继续调用?

javascript - 如何使用 jQuery 编辑列表元素

datepicker - JavaFX8 有没有一种方法可以在代码中选择 DatePicker 中的文本而无需单击它?

javascript - Highcharts 显示当图表放大时悬停在图表区域外的线上的点

html - Angular 6 和 bootstrap 4 : date picker

javafx - javaFx是否有可用的日期和时间选择器?

java - 如何在java中屏蔽字节来获取条件