JQuery UI对话框:密码输入导致冻结

时间:2013-02-16 19:41:22

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

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

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

为了体验这个问题,我们在2个独特的页面主页视图上自动打开对话框。这是一个列表页面,因此可以触发,我为此带来的不便表示歉意,但我无法删除该计数器。

Page:http://www.christineleeteam.com/area/eagleharbor

3 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,但缓存清除没有帮助。我敢肯定它不是一个jquery ui bug。 这是我的解决方案:

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

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

答案 1 :(得分:4)

我们遇到了同样的问题,并使用了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('');
            }
        });
    });

答案 2 :(得分:0)

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