r2350 - Fixed #4240 - Datepicker destroy affects other datepickers - appended text too

r2350 - Fixed #4240 - Datepicker destroy affects other datepickers - appended text too


Author: kbwood.au
Date: Sat Mar 21 22:47:08 2009
New Revision: 2350
Modified:
trunk/ui/ui.datepicker.js
Log:
Fixed #4240 - Datepicker destroy affects other datepickers - appended text
too
Modified: trunk/ui/ui.datepicker.js
==============================================================================
--- trunk/ui/ui.datepicker.js    (original)
+++ trunk/ui/ui.datepicker.js    Sat Mar 21 22:47:08 2009
@@ -166,13 +166,16 @@
    /* Attach the date picker to an input field. */
    _connectDatepicker: function(target, inst) {
        var input = $(target);
+        inst.append = $([]);
        inst.trigger = $([]);
        if (input.hasClass(this.markerClassName))
            return;
        var appendText = this._get(inst, 'appendText');
        var isRTL = this._get(inst, 'isRTL');
-        if (appendText)
-            input[isRTL ? 'before' : 'after']('<span class="' + this._appendClass
+ '">' + appendText + '</span>');
+        if (appendText) {
+            inst.append = $('<span class="' + this._appendClass + '">' + appendText
+ '</span>');
+            input[isRTL ? 'before' : 'after'](inst.append);
+        }
        var showOn = this._get(inst, 'showOn');
        if (showOn == 'focus' || showOn == 'both') // pop-up date picker when in
the marked field
            input.focus(this._showDatepicker);
@@ -277,9 +280,9 @@
        var nodeName = target.nodeName.toLowerCase();
        $.removeData(target, PROP_NAME);
        if (nodeName == 'input') {
+            inst.append.remove();
            inst.trigger.remove();
-            $target.siblings('.' + this._appendClass).remove().end().
-                removeClass(this.markerClassName).
+            $target.removeClass(this.markerClassName).
                unbind('focus', this._showDatepicker).
                unbind('keydown', this._doKeyDown).
                unbind('keypress', this._doKeyPress);
@@ -297,11 +300,10 @@
        }
        var nodeName = target.nodeName.toLowerCase();
        if (nodeName == 'input') {
-        target.disabled = false;
-            inst.trigger.filter("button").
-            each(function() { this.disabled = false; }).end().
-                filter("img").
-                css({opacity: '1.0', cursor: ''});
+            target.disabled = false;
+            inst.trigger.filter('button').
+                each(function() { this.disabled = false; }).end().
+                filter('img').css({opacity: '1.0', cursor: ''});
        }
        else if (nodeName == 'div' || nodeName == 'span') {
            var inline = $target.children('.' + this._inlineClass);
@@ -321,11 +323,10 @@
        }
        var nodeName = target.nodeName.toLowerCase();
        if (nodeName == 'input') {
-        target.disabled = true;
-            inst.trigger.filter("button").
-            each(function() { this.disabled = true; }).end().
-                filter("img").
-                css({opacity: '0.5', cursor: 'default'});
+            target.disabled = true;
+            inst.trigger.filter('button').
+                each(function() { this.disabled = true; }).end().
+                filter('img').css({opacity: '0.5', cursor: 'default'});
        }
        else if (nodeName == 'div' || nodeName == 'span') {
            var inline = $target.children('.' + this._inlineClass);