0

我有一个动态文本字段,我将它绑定到焦点事件以打开一个对话框。

$('#formtable').on('focus', '#textbox1', function (e) {                        
 callOpenDialog('Dialog');             
});

其中 formtable 是文本字段的 div 容器,函数定义为

function callOpenDialog(title)
{
 $("#Dialog").dialog({
        title: title,
        resizable: false,
        modal: true,
        height: 300,
        width: 300,           
        position: 'top'                      
    });
} 

问题在于:1)在文本字段焦点上,对话框打开,但焦点仍然在文本字段本身。我希望焦点在对话框上;2)关闭对话框时,错误显示为 Uncaught TypeError: Cannot call method '_focusTabbable' of null

但是,当我绑定到单击事件时,它可以正常工作,但是我必须在焦点事件上进行。

我尝试使用

e.preventDefault() 
or 
$("#Dialog").focus()

但无济于事。请帮忙。

4

2 回答 2

1

我有问题的答案

1)我禁用了焦点事件的文本框。

$('#formtable').on('focus', '#textbox1', function (e) {                        
   $("#textbox1").attr('disabled','disabled');
   callOpenDialog('Dialog');       
});

焦点现在转移到对话框。

2)对于这个错误“无法调用null的方法'_focusTabbable'”

我在 jquery 对话框的关闭事件上调用了 destroy 方法。

  close: function (event, ui) {
            $(this).dialog('destroy');             
        }   
于 2013-11-04T05:52:54.333 回答
0

你可以在 open 回调方法中初始化你的东西,

$( "#Dialog" ).dialog({
  open: function( event, ui ) {}
});

将事件侦听器绑定到 dialogopen 事件:

$( "#Dialog" ).on( "dialogopen", function( event, ui ) {} );

要了解有关事件和方法的更多信息:http: //api.jqueryui.com/dialog/

于 2013-10-30T04:26:23.920 回答