#106 closed defect (fixed)
[patch] Problem with some js/select box on IE
| Reported by: | paolo | Owned by: | Karen Tracey |
|---|---|---|---|
| Component: | contrib.admin | Version: | |
| Severity: | normal | Keywords: | |
| Cc: | nowellpublic@… | Triage Stage: | Accepted |
| Has patch: | yes | Needs documentation: | yes |
| Needs tests: | yes | Patch needs improvement: | yes |
| Easy pickings: | no | UI/UX: | no |
Description
Extract from Tutorial 1: 'When you click "Add Another," you'll get a popup window with the "Add poll" form. If you add a poll in that window and click "Save," Django will save the poll to the database and dynamically add it as the selected choice on the "Add choice" form you're looking at.'
This (dynamically add it) works on Mozilla 1.0.4 Win. It is not true on IE 6. A blank string is shown instead of name of the new poll. Just after a manual refresh of the page things appear correctly.
Attachments (2)
Change History (15)
by , 20 years ago
| Attachment: | RelatedObjectLookups.js.patch added |
|---|
comment:1 by , 20 years ago
I had the needing to solve this, so I have investigate on it.
The issue happen using IE, when foreignkeys fields are contained inside fieldsets. 1) Clicking on 'Add another' icon it doesn't open another window, but just display the new page in the same window; 2) when the new item is added as a new option, it is displayed at the last item of the select box as a blank string; 3) it is not shown as selected.
The attached patch works for me. I hope that it could solve this problems for other people too without any breakage. Thanks.
Index: django/conf/admin_media/js/admin/RelatedObjectLookups.js
===================================================================
--- django/conf/admin_media/js/admin/RelatedObjectLookups.js (revision 661)
+++ django/conf/admin_media/js/admin/RelatedObjectLookups.js (working copy)
@@ -20,19 +20,21 @@
function showAddAnotherPopup(triggeringLink) {
var name = triggeringLink.id.replace(/^add_/, '');
+ name = name.replace(/\./g, '___');
var win = window.open(triggeringLink.href + '?_popup=1', name, 'height=500,width=800,resizable=yes,scrollbars=yes');
win.focus();
return false;
}
function dismissAddAnotherPopup(win, newId, newRepr) {
- var elem = document.getElementById(win.name);
+ var name = win.name.replace(/___/g, '.')
+ var elem = document.getElementById(name);
if (elem.nodeName == 'SELECT') {
var o = new Option(newRepr, newId);
- elem.appendChild(o);
+ elem.options[elem.options.length] = o
elem.selectedIndex = elem.length - 1;
} else if (elem.nodeName == 'INPUT') {
elem.value = newId;
}
win.close();
-}
\ No newline at end of file
+}
comment:2 by , 20 years ago
| Summary: | Problem with some js/select box on IE → [patch] Problem with some js/select box on IE |
|---|
comment:3 by , 20 years ago
| milestone: | → Version 1.0 |
|---|---|
| Owner: | changed from to |
| Status: | new → assigned |
comment:4 by , 20 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
comment:5 by , 19 years ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
This doesn't actually fix the entire problem; IE only allows alphanumerics and underscores in window names, and Django has a habit of trying to generate these from IDs that contain hyphens.
I'll work up a more robust patch and submit it soon.
comment:7 by , 18 years ago
| Triage Stage: | Ready for checkin → Accepted |
|---|
Not ready for checkin, no patch for hyphen issue.
comment:8 by , 18 years ago
comment:9 by , 17 years ago
| Needs documentation: | set |
|---|---|
| Needs tests: | set |
comment:10 by , 17 years ago
| Owner: | changed from to |
|---|---|
| Status: | reopened → new |
by , 17 years ago
| Attachment: | patch.diff added |
|---|
This patch fixes the issue that dashes and dots cause for IE6+
comment:11 by , 17 years ago
| Cc: | added |
|---|
I have attached the updated (good catch kmtracey) patch to resolve this issue. Reference #9539 for examples of how to recreate this bug in the admin with a simple model and admin definition.
comment:12 by , 17 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
patch