【问题标题】:JQuery UI Dialog: Password inputs causing freezingJQuery UI 对话框:密码输入导致冻结
【发布时间】:2013-02-16 19:41:22
【问题描述】:

这是一种奇怪的行为,似乎只发生在 Chrome 和 JQuery UI 中。起初在密码字段中输入字符时,一切正常。但是,如果您尝试退格到输入中的最后一个字母,浏览器将锁定所有客户端操作。此外,如果您尝试突出显示输入的字符并退格,客户端操作将冻结。

只是想看看是否有人遇到过同样的问题,以及他们是如何解决的。

为了解决这个问题,我们在 2 次以上的独特页面主页视图中自动打开对话框。这是一个列表页面,因此可以触发它,对于给您带来的不便,我深表歉意,但我无法移除计数器。

页面:http://www.christineleeteam.com/area/eagleharbor

【问题讨论】:

  • 您能否将我们链接到其行为如您所描述的网站?
  • 你有一个 JSfiddle 或者你可以展示问题的东西吗?
  • 用示例更新了原帖,谢谢!
  • 嗯,在我的 Chrome(最新公开版本)中完全可以正常工作。
  • 我清除了我的缓存、cookie 等...似乎已经解决了。我想知道 Chrome 是否有密码字段更新时的事件处理程序?

标签: javascript jquery jquery-ui yii jquery-ui-dialog


【解决方案1】:

我遇到了同样的问题,但缓存清除没有帮助。我确定这不是 jquery ui 错误。 这是我的解决方案:

   $('input[type="password"]').on('keydown', function(event){
     if (event.which == 8) { //backspace event
       event.preventDefault();
       $(this).val('');
     }
   });

此代码在一个退格事件上清除整个密码字段。

【讨论】:

  • 一个让我发疯的难题的好答案。
【解决方案2】:

我们遇到了同样的问题,并使用了 Benkod 的解决方案。 我们对其进行了一些改进,以处理使用删除键(而不是退格键)删除密码文本的情况。 另一种情况是选择控件中的所有文本并键入新文本来替换它。 这是我们使用的脚本:

    Sys.Application.add_load(function() {
        $('input[type=password]').keydown(function(event) {

            var isAllTextSelected = this.value.slice(this.selectionStart, this.selectionEnd) == this.value;
            var isLastChar = $(this).val().length == 1;
            if (isAllTextSelected && $(this).val().length > 0) {
                $(this).val('');
            }
            if ((event.which == 8 || event.which == 46) && (isLastChar || isAllTextSelected)) { //backspace event

                event.preventDefault();
                $(this).val('');
            }
        });
    });

【讨论】:

  • 对初始解决方案的重要补充。我试图调查这个问题的原因,但只是没有时间再为它烦恼,所以非常感谢。
【解决方案3】:

这里有同样的问题(FWIW,我使用的是 Twitter Bootstrap,但问题是一样的)。 It looks like 这是由于输入之前有很多内容造成的。将输入放在更高的位置——高于大部分其他内容——对我来说是诀窍。解决方法,但总比没有好。

【讨论】:

    猜你喜欢
    • 2022-11-24
    • 2012-08-02
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多