ExtJS, PHP работает на двойной щелчок, и я хочу работать на один клик - PullRequest
0 голосов
/ 23 ноября 2010

в моем php-коде у меня есть таблица со строками:

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

каждая кнопка редактирования имеет идентификатор, например: <a href="edit('.$raw['id'].')" id="show-btn'.$raw['id'].'">

Теперь моя функция редактирования:

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);

    });
};

Этот скрипт работает отлично, но по щелчку безделушки, как я могу сделать это одним кликом.

У меня сейчас проблема на button.on('click')

Большое спасибо, пожалуйста, помогите мне с этим вопросом

1 Ответ

2 голосов
/ 23 ноября 2010

Похоже, какой-то уровень функциональности добавляется при первом нажатии, а затем используется для последующих щелчков. Я бы предложил поместить либо предупреждение, либо console.log (если ваш браузер его поддерживает) внутри функции редактирования как до, так и после теста if(win).

Мне также любопытно - если вы пытаетесь выполнить это для всей таблицы, разве эта глобальная переменная win не вызовет проблем?

Я думаю, вам лучше предварительно заполнить выигрыш и использовать локальную переменную:

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);

    });
};

Может ли это сработать? Если нет, нам нужно увидеть больше кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...