2010-11-23 10 views
0

in meinem PHP-Code arbeiten, ich mit den Zeilen einer Tabelle haben:extjs arbeitet php auf Doppelklick, und ich möchte auf einen Klick

name    actions 
category 1  edit 
category 2  edit 
.....    edit 

alle Editierbuttons haben eine ID für die Ex: <a href="edit('.$raw['id'].')" id="show-btn'.$raw['id'].'">

jetzt meine Funktion bearbeiten ist:

var win; 
var button; 


function edit(idd){ 

    button = Ext.get('show-btn'+idd); 

    button.on('click', function(){ 
     // create the window on the first click and reuse on subsequent clicks 
     if(!win){ 


      win = new Ext.Window({ 
       applyTo:'hello-win', 
       layout:'column', 

       closeAction:'hide', 
       plain: true, 
       autoHeight:true, 

       items: new Ext.FormPanel({ 
        applyTo: 'hello-tabs', 

       }), 

       buttons: [{ 
        text:'Modify', 
        handler: function(){ 

         win.hide(); 
         document.form_edit.submit(); 

        } 

        },{ 
         text: 'Close', 
         handler: function(){ 
          win.hide(); 
         } 
        }] 
       }); 
     } 
     win.show(this); 

    }); 
}; 

Dieses Skript funktioniert perfekt, aber auf flitter klicken, wie kann ich diese auf einen Klick tun.

ich jetzt das Problem ist auf button.on('click')

Vielen Dank, bitte helfen Sie mir mit diesem

gibt
+0

Übrigens ich möchte $ (document) nicht verwenden .ready (.. weil der Effekt verschwindet – cosy

+0

Was hat PHP damit zu tun? Auch ich könnte falsch liegen, aber [click is click] (http://dev.sencha.com/deploy/dev/docs/source/Button.html#event-Ext.Button-click) – Gordon

+0

Nun beobachte ich etwas, das erste Mal funktioniert es o Doppelklick, danach in Bearbeitung ? klicken sie zuerst, ich verstehe nicht, warum nicht auf den ersten Klick funktioniert – cosy

Antwort

2

Es ist wie ein gewisses Maß an Funktionalität scheint wird auf dem ersten Klick hinzugefügt und dann wird das für die nachfolgenden Klicks verwendet . Ich würde vorschlagen, entweder eine Warnung oder eine console.log (wenn Ihr Browser dies unterstützt) innerhalb der Bearbeitungsfunktion sowohl vor als auch nach dem if(win) Test.

Ich bin auch neugierig - wenn Sie versuchen, dies für eine ganze Tabelle auszuführen, würde nicht win globale Variable Probleme verursachen?

Ich glaube, du bist besser aus Pre-bevölkern Sieg und eine lokale Variable:

function edit(idd){ 

    button = Ext.get('show-btn'+idd); 
    // this can be moved into button.on('click', function(){, but that may be 
    // causing the problem... 
    // come to think of it... the example here: 
    // http://dev.sencha.com/deploy/dev/examples/window/hello.js 
    // has this inside the button.on method. You may want to try it both ways. 
    if(!button.win){ 

     button.win = new Ext.Window({ 
      applyTo:'hello-win', 
      layout:'column', 

      closeAction:'hide', 
      plain: true, 
      autoHeight:true, 

      items: new Ext.FormPanel({ 
       applyTo: 'hello-tabs', 

      }), 

      buttons: [{ 
       text:'Modify', 
       handler: function(){ 

        win.hide(); 
        document.form_edit.submit(); 

       } 

       },{ 
        text: 'Close', 
        handler: function(){ 
         win.hide(); 
        } 
       }] 
      }); 
    } 
    button.on('click', function(){ 
     // the window already exists, so no need to worry about creating it. 
     button.win.show(this); 

    }); 
}; 

Könnte das funktionieren? Wenn nicht, müssen wir mehr Code sehen.

+0

ich es geschafft, ersetze ich die button.on (‚Klick‘, function() { button.win.show (this); }); mit win.show (Knopf); – cosy

+0

es funktioniert jetzt perfekt, vielen Dank – cosy

Verwandte Themen