2011-06-22 13 views
2

問題の説明:真、 編集:真、 追加:真、 検索:偽 私はJqgridで上場し、ナビゲーションバーのjQuery UIのダイアログ+ Jqgrid

ビューを持っています、 del:true

行を選択して「編集」をクリックすると、編集可能なフィールドが表示されたダイアログがポップアップします。

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

しかし、焦点または何である

、私は編集ダイアログでgps_coordsフィールドをクリックすると、

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

google_mapダイアログが表示されます:私は、イベントハンドラを登録して一つのフィールドについては

(現在の背景編集ダイアログで)、カーソルは新しく開かれたものではなくそのフォームで を点滅させます。私は(ダイアログの設定で)しようと試みてきた

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

注:私は、新しく開いたダイアログのテキストフィールドを持っていますが、中クリック、またはそれが値です変更することはできません。

これで、新たに開いたダイアログに焦点を当てることができますか?

ありがとうございました

答えて

2

私はこの問題を修正しました。私の場合は次のとおりです。

各ダイアログはモーダルで、最初にポップアウトしたときに何もできなかったので、私はモーダルオプションを削除しました。今度は2番目のモーダルのみがtrue:そしてそれは素晴らしいです。

ダイアログ1:

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

ダイアログ2:

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

私は正しいことを理解しているかどうかわかりません。

しかし、私はそれを理解し、どのようにcolModelgps_coords列定義の追加editoptionsオプションを使用してエディットコントロールにバインド$("#gps_coords").live("click",...を置き換えることができます、あなたはおそらく$("#google_map").focus()のような呼び出しを使用する必要がありますフォーカスを設定するには

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

別のスレッドに配置する必要があります:

setTimeout(function(){ 
    $("#google_map").focus(); 
}, 50); 
+0

を試して生きる( "クリック" ..。私はダイアログボックスのテキストボックス( "#google_map")をクリックすることはできません。カーソルは、firsのjqgridダイアログで点滅するたびに表示されますtテキストフィールド! – Kszili

+0

@Kszili:特定のテキストフィールドにフォーカスを当てたい場合は、 '$(selector).focus()'のセレクタとして使用する必要があります。たとえば、フィールドにはid = "mytextfield"があり、 '$("#google_map ")の代わりに' $( 'mytextfield')。focus() 'を使うことができます。フィールドにidがなければ、 '$("#google_map input:first ")。focus()'のように別の方法で識別する必要があります。 – Oleg

+0

@Oleg:私はそれをしましたが、私が言いましたように、私はそのテキストボックスをクリックすることはできません、私はそれをしようとすると、jqgridのダイアログボックスの最初のtextbox要素はカーソルが点滅します。 – Kszili

0

は$( "#のgps_coordsを")の交換この

$.widget("ui.dialog", $.ui.dialog, { 
    _allowInteraction: function(event) { 
     return !!$(event.target).closest(".ui-jqdialog").length || this._super(event); 
    } 
});