Ik wil graag aan de hand van een keuzemenu (<select>), een div element vullen met wat eenvoudige HTML content. Hierin staat ook telkens een textarea, die ik wil laten vervangen door een CKEditor. Dit gebeurd dmv van een ajax request. Dit werkt op zich prima. De HTML ziet er als volgt uit:
En de jQuery:
Zoals gezegd, werkt dit goed. Het probleem is echter, wanneer je eerst optie 1 selecteerd, vervolgens optie 2 en daarna weer de 1ste optie selecteerd (volg je het nog
), wordt de textarea niet meer vervangen.
Ik heb al geprobeerd om alle textarea's een apart id mee te geven: <textarea id="editor-{$template_id}">. Dit maakt geen verschil vergeleken met <textarea id="editor">.
Heeft iemand enig idee hoe dit kan komen? Ik heb zelf het idee dat dit komt doordat hetzelfde id al eerder vervangen is door CKEditor. Ik kan dit natuurlijk oplossen door een teller bij te houden en deze bij elke wijziging aan de <select> op te hogen, zodat je altijd een uniek textarea id krijgt. Dit is echter omslachtig en ik mag toch aannemen dat dit makkelijker op te lossen is.
HTML:
1
2
3
4
5
6
| <label for="template">Sjabloon</label> <select name="template" id="template"> <option value="0"></option> <option value="1">User Template 1</option> <option value="2">Systeem template 1</option> </select><br /> |
En de jQuery:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| jQuery(document).ready(function() { jQuery('#template').change(function() { var value = jQuery(this).val(); if(value != 0) { jQuery('#mail_content').show(); jQuery.ajax({ url: baseURL + 'versturen/laad_template/' + value, type: 'POST', data: { template_id: value }, success: function(data) { jQuery('#sjablonen_template').html(data); jQuery('textarea#editor-' + value).ckeditor(); // Hier wordt de ckeditor dus ingeladen.... } }); } else { jQuery('#mail_content').hide(); } }); }); |
Zoals gezegd, werkt dit goed. Het probleem is echter, wanneer je eerst optie 1 selecteerd, vervolgens optie 2 en daarna weer de 1ste optie selecteerd (volg je het nog
Ik heb al geprobeerd om alle textarea's een apart id mee te geven: <textarea id="editor-{$template_id}">. Dit maakt geen verschil vergeleken met <textarea id="editor">.
Heeft iemand enig idee hoe dit kan komen? Ik heb zelf het idee dat dit komt doordat hetzelfde id al eerder vervangen is door CKEditor. Ik kan dit natuurlijk oplossen door een teller bij te houden en deze bij elke wijziging aan de <select> op te hogen, zodat je altijd een uniek textarea id krijgt. Dit is echter omslachtig en ik mag toch aannemen dat dit makkelijker op te lossen is.