我有一个动态文本字段,我将它绑定到焦点事件以打开一个对话框。
$('#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()
但无济于事。 请帮忙。
答案 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/