From efa827995acdb156bc11b58f2007a0f048f3d3c6 Mon Sep 17 00:00:00 2001 From: Jason Hanggi Date: Mon, 14 Jan 2013 13:54:19 -0600 Subject: [PATCH] success callback is rebound on every key up. Should resolve issue #30 --- src/ajax-chosen.coffee | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/ajax-chosen.coffee b/src/ajax-chosen.coffee index 1fcd512..12259a1 100644 --- a/src/ajax-chosen.coffee +++ b/src/ajax-chosen.coffee @@ -62,17 +62,19 @@ do ($ = jQuery) -> field = $(@) # Default term key is `term`. Specify alternative in options.options.jsonTermKey - options.data = {} if not options.data? - options.data[options.jsonTermKey] = val - options.data = options.dataCallback(options.data) if options.dataCallback? + # Create a copy of options so options.success doesn't get overwritten + ajaxOptions = $.extend({}, options) + ajaxOptions.data = {} if not ajaxOptions.data? + ajaxOptions.data[options.jsonTermKey] = val + ajaxOptions.data = ajaxOptions.dataCallback(ajaxOptions.data) if ajaxOptions.dataCallback? # If the user provided an ajax success callback, store it so we can # call it after our bootstrapping is finished. - success = options.success + success = ajaxOptions.success # Create our own callback that will be executed when the ajax call is # finished. - options.success = (data) -> + ajaxOptions.success = (data) -> # Exit if the data we're given is invalid return if not data? @@ -165,5 +167,5 @@ do ($ = jQuery) -> # Execute the ajax call to search for autocomplete data with a timer @timer = setTimeout -> chosenXhr.abort() if chosenXhr - chosenXhr = $.ajax(options) + chosenXhr = $.ajax(ajaxOptions) , options.afterTypeDelay