@@ -255,7 +255,7 @@ On the rendered page, the result will look something like this:
255
255
256
256
.. code-block :: html
257
257
258
- <ul class =" tags" data-prototype =" < ; div> ;< ; label class=" ; required" ;> ; __name__< ; /label> ;< ; div id=" ; task_tags___name__" ;> ;< ; div> ;< ; label for=" ; task_tags___name___name" ; class=" ; required" ;> ; Name< ; /label> ;< ; input type=" ; text" ; id=" ; task_tags___name___name" ; name=" ; task[tags][__name__][name]" ; required=" ; required" ; maxlength=" ; 255" ; /> ;< ; /div> ;< ; /div> ;< ; /div> ; " >
258
+ <ul class =" tags" data-index = " {{ form.tags|length > 0 ? form.bars|last.vars.name + 1 : 0 }} " data- prototype =" < ; div> ;< ; label class=" ; required" ;> ; __name__< ; /label> ;< ; div id=" ; task_tags___name__" ;> ;< ; div> ;< ; label for=" ; task_tags___name___name" ; class=" ; required" ;> ; Name< ; /label> ;< ; input type=" ; text" ; id=" ; task_tags___name___name" ; name=" ; task[tags][__name__][name]" ; required=" ; required" ; maxlength=" ; 255" ; /> ;< ; /div> ;< ; /div> ;< ; /div> ; " >
259
259
260
260
.. seealso ::
261
261
@@ -340,6 +340,31 @@ you'll replace with a unique, incrementing number (e.g. ``task[tags][3][name]``)
340
340
// Add the new form at the end of the list
341
341
$collectionHolder .append ($newFormLi)
342
342
}
343
+
344
+ Code without jQuery library
345
+
346
+ .. code-block :: javascript
347
+ const newItem = (e ) => {
348
+ const collectionHolder = document .querySelector (` .${ e .currentTarget .dataset .collectionHolderClass } ` );
349
+
350
+ const item = document .createElement (" div" );
351
+
352
+ item .innerHTML = collectionHolder
353
+ .dataset
354
+ .prototype
355
+ .replace (
356
+ / __name__/ g ,
357
+ collectionHolder .dataset .index
358
+ );
359
+
360
+ collectionHolder .appendChild (item);
361
+
362
+ collectionHolder .dataset .index ++ ;
363
+ };
364
+
365
+ document
366
+ .querySelectorAll (' .add_item_link' )
367
+ .forEach (btn => btn .addEventListener (" click" , newItem));
343
368
344
369
Now, each time a user clicks the ``Add a tag `` link, a new sub form will
345
370
appear on the page. When the form is submitted, any new tag forms will be converted
0 commit comments