Newer
Older
dmpopidor / lib / assets / javascripts / views / question_options / index.js
$(() => {
  $('.delete_question_option').on('click', (e) => {
    e.preventDefault();
    const source = e.target;
    $(source).closest('[data-attribute="question_option"]').hide();
  });
  $('.new_question_option').on('click', (e) => {
    e.preventDefault();
    const source = e.target;
    const last = $(source).closest('[data-attribute="question_options"]').find('[data-attribute="question_option"]').last();
    const cloned = last.clone(true);
    const array = $(cloned).find('[id$="_number"]').prop('id').match(/[^\d]*(\d)+[^$]*/);
    if (array) {
      const index = Number(array[1]);
      // Reset values for the new cloned inputs
      cloned.find(`[id$="${index}_number"]`).val(index + 2);
      cloned.find(`[id$=${index}_text]`).val('');
      cloned.find(`[id$=${index}_is_default]`).prop('checked', false);
      cloned.find(`[id$="${index}__destroy"]`).val(false);
      cloned.find('input').each((i, el) => {
        // Rename id and name for the cloned inputs
        $(el).prop('id', $(el).prop('id').replace(/_\d+_/g, `_${index + 1}_`));
        $(el).prop('name', $(el).prop('name').replace(/\[\d+\]/g, `[${index + 1}]`));
      });
      last.after(cloned);
      cloned.show();
    }
  });
});