首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery插件版本升级

jquery插件版本升级
EN

Stack Overflow用户
提问于 2012-12-07 04:46:32
回答 1查看 126关注 0票数 0

我们使用jquery input mask from here和一个在必要时设置和取消设置掩码的代码片段:

代码语言:javascript
复制
$('input.maskedInput').focus(function () {

        $(this).mask("999-999-9999");
    }).blur(function () {

        var numbers = $(this).val().replace(/-/g, '').replace(/_/g, '');
        $(this).val(numbers.toString()).unmask();
    });

这在jquery 1.3.2中工作得很好,但当升级到1.8.2时,当用户没有错误地离开字段时,它会停止取消屏蔽。需要调整哪些内容才能再次开始取消屏蔽?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-07 05:22:06

问题是你移除了模糊处理程序(通过调用unmask)附加在另一个模糊处理程序中的插件。为了避免不可预测的行为,jQuery在本地保存了对所有处理程序的引用,然后再运行其中任何处理程序。

  1. 模糊发生。Input有两个模糊处理程序(你的和来自plugin);
  2. jQuery的那个复制了一个handlers.
  3. Yours处理程序的数组,似乎是先运行的。它调用unmask来删除第二个处理程序。但是在调度循环中仍然有一个引用。
  4. jQuery运行恢复掩码的第二个处理程序。

我不知道为什么这段代码适用于jq1.3.2。

要避免这种情况,可以立即停止模糊事件的传播。http://api.jquery.com/event.stopImmediatePropagation/

代码语言:javascript
复制
.blur(function (ev) {
        var numbers = $(this).val().replace(/-/g, '').replace(/_/g, '');
        $(this).unmask();
        ev.stopImmediatePropagation();
        $(this).val(numbers);
    })

http://jsfiddle.net/tarabyte/XgYSz/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13752243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档