JQuery UI Dialog + Jqgrid в то же время - PullRequest
2 голосов
/ 22 июня 2011

Описание проблемы: У меня есть список с Jqgrid и панель навигации

вид: правда, Редактирование: правда, добавить: правда, Поиск: ложь, дель: правда

Когда я выбираю строку и нажимаю «Изменить», появляется диалоговое окно с редактируемыми полями.

Для одного поля я зарегистрировал обработчик события:

$("#gps_coords").live("click",function(){
        $("#google_map").dialog("open");
    });

Когда я щелкаю в поле gps_coords в диалоговом окне редактирования, открывается диалоговое окно google_map,

 $("#google_map").dialog(
{
    width:800,
    height:500,
    autoOpen: false,
    modal:true, 
    ....
 }

Но фокус или что-то находится на (теперь диалоговое окно редактирования фона), поэтому курсор мигает в этой форме вместо недавно открытой.

Я попытался (при настройке диалога):

  open: function(event, ui) {
        $("#google_map").focus(); 
    }

Примечание. У меня есть текстовое поле во вновь открытом диалоговом окне, но я не могу щелкнуть или изменить его значение.

Так что же можно сделать, чтобы сосредоточиться на недавно открытом диалоге?

Спасибо

Ответы [ 3 ]

2 голосов
/ 24 июня 2011

Я исправил проблему, в моем случае это было следующее:

Каждый диалог был модальным, и когда он выскакивал первым, то ничего не мог сделать, я удалил из него модальную опцию, и теперь только второй имеет модальное значение: true. И он отлично работает.

Диалог 1:

$("#dialog1").dialog(
    {
        width:800,
        height:500,
        autoOpen: false,
        //modal:true
        ...
});

Диалог 2:

$("#dialog2").dialog(
        {
            width:800,
            height:500,
            autoOpen: false,
            modal:true,
            ...
    });
2 голосов
/ 23 июня 2011

Я не уверен, что правильно вас понял.

Но, насколько я понимаю, вы можете заменить $("#gps_coords").live("click",... привязку к элементу редактирования на дополнительные editoptions опции определения столбца gps_coords в colModel:

editoptions: {
    dataEvents: [ 
        {
            type: 'click',
            fn: function() {
                $("#google_map").dialog("open");
            }
        }
    ] 
}

Чтобы установить фокус, вам, вероятно, следует использовать вызов, подобный $("#google_map").focus(), но вам придется поместить его в отдельный поток:

setTimeout(function(){
    $("#google_map").focus();
}, 50);
0 голосов
/ 23 апреля 2015

Попробуйте это

$.widget( "ui.dialog", $.ui.dialog, {
    _allowInteraction: function( event ) {
        return !!$( event.target ).closest( ".ui-jqdialog" ).length || this._super( event );
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...