Index: django/contrib/admin/media/js/core.js
===================================================================
--- django/contrib/admin/media/js/core.js	(revision 10585)
+++ django/contrib/admin/media/js/core.js	(working copy)
@@ -29,6 +29,21 @@
     }
 }
 
+function fireEvent(obj, evType) {
+    if(document.createEvent) {
+        var evObj = document.createEvent('HTMLEvents');
+        evObj.initEvent(evType, true, false);
+        obj.dispatchEvent(evObj);
+    }
+    else if(document.createEventObject) {
+        obj.fireEvent('on' + evType);
+    }
+}
+
+function hasClass(obj, className) {
+    return !!className && obj.className.indexOf(className) > -1
+}
+
 // quickElement(tagType, parentReference, textInChildNode, [, attribute, attributeValue ...]);
 function quickElement() {
     var obj = document.createElement(arguments[0]);
Index: django/contrib/admin/media/js/admin/DateTimeShortcuts.js
===================================================================
--- django/contrib/admin/media/js/admin/DateTimeShortcuts.js	(revision 10585)
+++ django/contrib/admin/media/js/admin/DateTimeShortcuts.js	(working copy)
@@ -116,8 +116,10 @@
        window.document.onclick = null;
     },
     handleClockQuicklink: function(num, val) {
-       DateTimeShortcuts.clockInputs[num].value = val;
-       DateTimeShortcuts.dismissClock(num);
+        var elem = DateTimeShortcuts.clockInputs[num];
+        elem.value = val;
+        fireEvent(elem, 'keyup');
+        DateTimeShortcuts.dismissClock(num);
     },
     // Add calendar widget to a given field.
     addCalendar: function(inp) {
@@ -237,12 +239,14 @@
         DateTimeShortcuts.calendars[num].drawNextMonth();
     },
     handleCalendarCallback: function(num) {
-        return "function(y, m, d) { DateTimeShortcuts.calendarInputs["+num+"].value = y+'-'+(m<10?'0':'')+m+'-'+(d<10?'0':'')+d; document.getElementById(DateTimeShortcuts.calendarDivName1+"+num+").style.display='none';}";
+        return "function(y, m, d) { var elem = DateTimeShortcuts.calendarInputs[" + num + "]; elem.value = y+'-'+(m<10?'0':'')+m+'-'+(d<10?'0':'')+d; document.getElementById(DateTimeShortcuts.calendarDivName1+" + num + ").style.display='none'; fireEvent(elem, 'keyup');}";
     },
     handleCalendarQuickLink: function(num, offset) {
        var d = new Date();
-       d.setDate(d.getDate() + offset)
-       DateTimeShortcuts.calendarInputs[num].value = d.getISODate();
+       d.setDate(d.getDate() + offset);
+       var elem = DateTimeShortcuts.calendarInputs[num];
+       elem.value = d.getISODate();
+       fireEvent(elem, 'keyup');
        DateTimeShortcuts.dismissCalendar(num);
     },
     cancelEventPropagation: function(e) {
Index: django/contrib/admin/templates/admin/prepopulated_fields_js.html
===================================================================
--- django/contrib/admin/templates/admin/prepopulated_fields_js.html	(revision 10585)
+++ django/contrib/admin/templates/admin/prepopulated_fields_js.html	(working copy)
@@ -1,3 +1,4 @@
+{% autoescape off %}
 <script type="text/javascript">
 {% for field in prepopulated_fields %}
     document.getElementById("{{ field.field.auto_id }}").onchange = function() { this._changed = true; };
@@ -2,8 +3,43 @@
     {% for dependency in field.dependencies %}
-    document.getElementById("{{ dependency.auto_id }}").onkeyup = function() {
-        var e = document.getElementById("{{ field.field.auto_id }}");
-        if (!e._changed) { e.value = URLify({% for innerdep in field.dependencies %}document.getElementById("{{ innerdep.auto_id }}").value{% if not forloop.last %} + ' ' + {% endif %}{% endfor %}, {{ field.field.field.max_length|default_if_none:"50" }}); }
-    }
+        {% if dependency.field.widget.widgets %}
+            {% comment %} widget is a MultiWidget {% endcomment %}
+            {% for widget in dependency.field.widget.widgets %}
+                document.getElementById("{{ dependency.auto_id }}_{{ forloop.counter0 }}").onkeyup = function() {
+                    var e = document.getElementById("{{ field.field.auto_id }}");
+                    if (!e._changed) {
+                        var value = '';
+                        var inputs = [];
+                        {% for innerdep in field.dependencies %}
+                            {% if innerdep.field.widget.widgets %}
+                                inputs = inputs.concat({% for widget in innerdep.field.widget.widgets %}"{{ innerdep.auto_id }}_{{ forloop.counter0 }}"{% if not forloop.last %}, {% endif %}{% endfor %});
+                            {% else %}
+                                inputs.push("{{ innerdep.auto_id }}");
+                            {% endif %}
+                        {% endfor %}
+                        for (var i = 0; i < inputs.length; i++) {
+                            var elem = document.getElementById(inputs[i]);
+                            if (hasClass(elem, 'vTimeField')) {
+                                value += elem.value.replace(/:/g, "-");
+                            } else {
+                                value += elem.value;
+                            }
+                            if (i != (inputs.length - 1)) {
+                                value += " ";
+                            }
+                        }
+                        e.value = URLify(value, {{ field.field.field.max_length|default_if_none:"50" }});
+                    }
+                }
+            {% endfor %}
+        {% else %}
+            document.getElementById("{{ dependency.auto_id }}").onkeyup = function() {
+                var e = document.getElementById("{{ field.field.auto_id }}");
+                if (!e._changed) {
+                    e.value = URLify({% for innerdep in field.dependencies %}document.getElementById("{{ innerdep.auto_id }}").value{% if not forloop.last %} + ' ' + {% endif %}{% endfor %}, {{ field.field.field.max_length|default_if_none:"50" }});
+                }
+            }
+        {% endif %}
     {% endfor %}
 {% endfor %}
 </script>
+{% endautoescape %}
\ No newline at end of file
