#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 , 19 years ago
Attachment: | RelatedObjectLookups.js.patch added |
---|
comment:1 by , 19 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 , 19 years ago
Summary: | Problem with some js/select box on IE → [patch] Problem with some js/select box on IE |
---|
comment:3 by , 19 years ago
milestone: | → Version 1.0 |
---|---|
Owner: | changed from | to
Status: | new → assigned |
comment:4 by , 19 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:5 by , 18 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 , 17 years ago
Triage Stage: | Ready for checkin → Accepted |
---|
Not ready for checkin, no patch for hyphen issue.
comment:8 by , 17 years ago
comment:9 by , 16 years ago
Needs documentation: | set |
---|---|
Needs tests: | set |
comment:10 by , 16 years ago
Owner: | changed from | to
---|---|
Status: | reopened → new |
by , 16 years ago
Attachment: | patch.diff added |
---|
This patch fixes the issue that dashes and dots cause for IE6+
comment:11 by , 16 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 , 16 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
patch