Вызов плагина EditInplace jquery для функции, а не для клика - PullRequest
5 голосов
/ 30 апреля 2011

Я использую плагин jQuery editinPlace, способ редактирования по умолчанию на месте - это использование события щелчка на селекторе, но я пытаюсь сделать это через контекстное меню, которое вызывает функцию «rename ();».Итак, как мне заблокировать встроенное редактирование при клике.Пожалуйста, поделитесь идеей о том, как это сделать ...

$('.context').editInPlace({ 
        callback: function(idOfEditor) {
        var renameUrl = "http://www.google.com/"+tablerowId+"/"+enteredText+"";
        return enteredText;
        }
    });

1 Ответ

1 голос
/ 02 мая 2011

Откройте исходный файл /jquery.editinplace.js. (Онлайн версия> http://code.google.com/p/jquery-in-place-editor/source/browse/trunk/lib/jquery.editinplace.js)

В первом объявлении функции $.fn.editInPlace Строка № 26 измените следующую строку:

new InlineEditor(settings, dom).init();

в>

dom.theEditor = new InlineEditor(settings, dom);
dom.theEditor.init();
dom.data("theEditor", dom.theEditor);

Теперь внутри события click вашей функции контекстного меню, вызовите это>

$("#myContextMenuElement").live("click", function (e) {
                    //your other code
                    rename(e); //you need to pass the event argument to it now 
});

удостоверьтесь, что передали 'e' в него.

и в функции переименования>

function rename(e) { 
   $("#myElementToEditInPlace").data("theEditor").openEditor(e);
}

работает как шарм!

EDIT:

Чтобы убедиться, что вы не разрешаете пользователю активный редактор, нажав на сам пункт> используйте этот код:

var myDelegate = { 
      shouldOpenEditInPlace: function (a, b, c) { 
         if (c.target.id != "idOfYourContextElement") { //if the edit was not invoked through the context menu option
              return false; //cancel the editor open event
         }
         return true;
    } 
};

и добавьте делегатов в вашу инициализацию>

$('.context').editInPlace({ 
        callback: function(idOfEditor) {
           var renameUrl = "http://www.google.com/"+tablerowId+"/"+enteredText+"";
            return enteredText;
        },
        delegate: del
    });
...