Изменить данные формы перед отправкой? - PullRequest
0 голосов
/ 24 сентября 2018

У меня действительно большая форма (слишком много значений для запроса на публикацию), и теперь я попытался уменьшить количество параметров публикации, суммируя значения построчно.

<form name="old_postform" method="post" action="https://example.com" />
    <input type="text" name="1_firstname" />
    <input type="text" name="1_lastname" />
    <input type="text" name="1_age" />
    <input type="text" name="2_firstname" />
    <input type="text" name="2_lastname" />
    <input type="text" name="2_age" />
    <input type="text" name="3_firstname" />
    <input type="text" name="3_lastname" />
    <input type="text" name="3_age" />
</form>

Я уже пробовалчтобы отреагировать на событие отправки формы, прервав это и отправив другую форму вместо этого, но это не сработало, потому что у меня есть некоторые другие значения, которые тоже нужно отправить:

$('form[name="old_postform"]').submit(function (e) {
    let new_postform = '<form id="new_postform" method="post">';

    for(var i = 0; i < 1000; i++) {
        new_postform += '<input type="hidden" name="' + i + '" value="';
        new_postform += $('input[name=' + i + '_firstname' + ']').val() + ';';
        new_postform += $('input[name=' + i + '_lastname' + ']').val() + ';';
        new_postform += $('input[name=' + i + '_age' + ']').val() + ';';
    }

    new_postform += '</form>';
    $("#new_postform").submit();
});

Есть ли простой способудалить все параметры записи, которые начинаются с одной, двух или трех цифр из старой формы, и вместо этого добавить мою новую post_form?

Буду очень признателен за вашу помощь!;)

1 Ответ

0 голосов
/ 24 сентября 2018

вам не нужно создавать другую форму для отправки.Прочитайте все параметры и удалите ненужные входные данные из формы, добавьте разделенные точкой с запятой значения в качестве скрытого ввода и отправьте форму.

См. Ниже код

$('form[name="old_postform"]').submit(function (e) {
    var $form = $(this);
    var $inputs = $form.find(":input");
    var len = $inputs.length/3; // calculate number of firstname, lastname and age per index

    for(var i=1; i<=len; i++){
      var $fn = $('input[name=' + i + '_firstname]');
      var $ln = $('input[name=' + i + '_lastname]');
      var $age = $('input[name=' + i + '_age]');
      var values = '<input type="hidden" name="' + i + '" value="';
        values += $fn.val() + ';';
        values += $ln.val() + ';';
        values += $age.val() + ';">';

        //remove read elements
        $fn.remove();
        $ln.remove();
        $age.remove();

       //append hidden input
       $form.append(values);
    };
    $form.submit();
});
...