site.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. "use strict";
  2. !function($) {
  3. $(function () {
  4. $('.fieldlist').each(function() {
  5. var $this=$(this);
  6. var lis=$this.children('li');
  7. lis.first().children(':first').after(' <button class="btn btn-mini" type="button"><i class="icon-plus"></i></button>');
  8. lis.first().children('button').click(function() {
  9. clone_fieldlist($this.children('li:last'));
  10. });
  11. lis=lis.slice(1);
  12. lis.each(function() {
  13. append_remove_button($(this));
  14. });
  15. });
  16. $('.selectpicker').selectpicker();
  17. });
  18. function change_input_num(li, new_num, reset=false) {
  19. li.find('input,select').each(function() {
  20. var id = $(this).attr('id').replace(/^(.*)-\d{1,4}/, '$1-'+new_num);
  21. $(this).attr({'name': id, 'id': id});
  22. if(reset)
  23. $(this).val('').removeAttr('checked');
  24. });
  25. }
  26. function append_remove_button(li) {
  27. li.children(':first').after(' <button class="btn btn-mini" type="button"><i class="icon-minus"></i></button>');
  28. li.children('button').click(function() {
  29. var ul=li.parent();
  30. li.remove();
  31. var i=0;
  32. ul.children('li').each(function() {
  33. change_input_num($(this), i);
  34. i++;
  35. });
  36. });
  37. };
  38. function clone_fieldlist(el) {
  39. var new_element = el.clone(true);
  40. var elem_id = new_element.find(':input')[0].id;
  41. var elem_num = parseInt(elem_id.replace(/^.*-(\d{1,4})/, '$1')) + 1;
  42. change_input_num(new_element, elem_num, true);
  43. new_element.children('button').remove();
  44. new_element.children('.help-inline.error-list').remove();
  45. new_element.find('.bootstrap-select').remove();
  46. append_remove_button(new_element);
  47. new_element.find('.selectpicker').data('selectpicker', null).selectpicker();
  48. el.after(new_element);
  49. }
  50. }(window.jQuery);