在文本字段焦点事件上打开jquery对话框时出错

时间:2013-10-30 04:17:19

标签: javascript jquery

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

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

其中formtable是textfield的div容器,函数定义为

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

问题在于: 1)在文本字段焦点上,对话框打开,但焦点仍然是文本字段本身。我希望焦点到对话框; 2)关闭对话框时,错误显示为 未捕获的TypeError:无法调用null

的方法'_focusTabbable'

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

我尝试使用

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

但无济于事。 请帮忙。

2 个答案:

答案 0 :(得分:1)

我已经回答了问题

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

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

焦点现在转移到对话框。

2)对于此错误“无法调用方法'_focusTabbable'为null”

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

  close: function (event, ui) {
            $(this).dialog('destroy');             
        }   

答案 1 :(得分:0)

您可以使用开放回调方法初始化您的内容,

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

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

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

了解更多有关活动的信息方法:http://api.jqueryui.com/dialog/