From 02c3a2e4a87b7b0ba9d2998eb7e5f95658a9189b Mon Sep 17 00:00:00 2001 From: Bryan Shelton Date: Thu, 21 Jun 2012 16:10:38 -0500 Subject: [PATCH] Pass a response handler function to custom target functions. --- jquery.jeditable.js | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/jquery.jeditable.js b/jquery.jeditable.js index eb8a911..7e7b711 100644 --- a/jquery.jeditable.js +++ b/jquery.jeditable.js @@ -308,13 +308,21 @@ /* Check if given target is function */ if ($.isFunction(settings.target)) { - var str = settings.target.apply(self, [input.val(), settings]); - $(self).html(str); - self.editing = false; - callback.apply(self, [self.innerHTML, settings]); - /* TODO: this is not dry */ - if (!$.trim($(self).html())) { - $(self).html(settings.placeholder); + /* Callback function to handle the target reponse */ + var handleresponse = function(value) { + $(self).html(value); + self.editing = false; + callback.apply(self, [self.innerHTML, settings]); + /* TODO: this is not dry */ + if (!$.trim($(self).html())) { + $(self).html(settings.placeholder); + } + } + /* Call the user target function */ + var user_target = settings.target.apply(self, [input.val(), settings, handleresponse]); + /* Handle the target function return for compatibility */ + if (false !== user_target && undefined !== user_target) { + handleresponse(user_target); } } else { /* Add edited content and id of edited element to POST. */