驯服JQuery Dialog小部件

时间:2011-12-19 18:12:47

标签: javascript jquery jquery-dialog

我正在尝试解决一个JQuery对话框小部件的2个问题。

1)当对话框是模态时,在某些计算机屏幕上(缩放和分辨率可能会有所不同),对话框会将滚动条引入文档。在对话框下面显然有一个叠加层,我假设这就是导致滚动条出现的原因。你知道我怎么能避免这种情况发生在i)所有分辨率和ii)任何变焦

2)对于特定对话框,我想让“Enter”按钮产生默认动作。我到目前为止尝试的代码如下,但我无法使其工作。要清楚,我已经查看了解决方案here。 div当然专注于开放。但是,当我按[Enter]时,我会继续在Chrome中收到这些控制台错误。


    FOCUS set
    ...

    event.layerX and event.layerY are broken and deprecated in WebKit. They will be removed from the engine in the near future.

这是我到目前为止尝试过的代码:


    var opts =    {      
      modal: true,
      open: function() {
        $(this).focus();
      }, 
      focus: function(event, ui) {
        console.log('FOCUS set');

        $(this)
          .keyup(function(e) {
            var code = (e.keyCode ? e.keyCode : e.which);
            if (code == 10 || code == 13) alert('Enter key was pressed.');
            e.preventDefault();
            console.log('key pressed.');
          });
      },
      ...
    }

    $('#mydiv').dialog(opts);

1 个答案:

答案 0 :(得分:1)

以下是使用Enter:

关闭的解决方案

http://jsfiddle.net/J9KvV/

的JavaScript

$(document).ready(function () {
    $('#dialog').dialog();
    $(document).keydown(function (event) {
        var dialog = $('#dialog');
        if (dialog.dialog('isOpen')) {
            if (event.keyCode === 13) {
                dialog.dialog('close');
            }
        }
    });
});

HTML

<div id="dialog" title="Header">
My Window
</div>