@SemyonDyachenko

Получение значений полей в php созданных через JS?

Все привет, у меня сайт по регистрации ОСАГО и там очень большая форма , много полей. Но проблема тут вот в чём. Есть скрипт:

<script>
let container = $('#alldrivers');
let number = 1;
let numLabel;
let labelName;
let inputName;
let labelFam;
let inputFam;
let labelOtch;
let inputOtch;
let labelDate;
let inputDate;
let labelLicence;
let inputLicence;
let labelDateStage;
let inputDateStage;
if($('#add').click(function() {
number = number+1;
 numLabel = "<label name='driver"+number+"'>Водитель "+number+"</label><br>";
labelName = "<label name='driver"+number+"names' for='driver"+number+"name'>Имя</label>";
inputName ="<input  class='inputs' type='text' name='driver"+number+"name' id='driver"+number+"name' placeholder='Имя' />";
labelFam = "<label name='driver"+number+"fam' for='driver"+number+"famil'>Фамилия</label>";
inputFam ="<input  class='inputs' type='text' name='driver"+number+"famil' id='driver"+number+"famil' placeholder='Фамилия' />";
labelOtch = "<label name='driver"+number+"otch' for='driver"+number+"otchestvo'>Отчество</label>";
inputOtch ="<input  class='inputs' type='text' name='driver"+number+"otchestvo' id='driver"+number+"otchestvo' placeholder='Отчество' />";
 labelDate = "<label name='driver"+number+"dateborn' for='driver"+number+"dateborns'>Дата рождения</label>";
 inputDate ="<input  class='inputs' type='date' name='driver"+number+"dateborns' id='driver"+number+"dateborns'/>";
labelLicence = "<label name='driver"+number+"licen' for='driver"+number+"licence'>В/У</label>";
 inputLicence ="<input  class='inputs' type='text' name='driver"+number+"licence' id='driver"+number+"licence' placeholder='Водительское удостоверение' />";
labelDateStage = "<label name='driver"+number+"stage' for='driver"+number+"stages'>Дата начала стажа</label>";
 inputDateStage ="<input  class='inputs' type='date' name='driver"+number+"stages' id='driver"+number+"stages'/>";
container.append(numLabel);
container.append(labelName);
container.append(inputName);
container.append(labelFam);
container.append(inputFam);
container.append(labelOtch);
container.append(inputOtch);
container.append(labelDate);
container.append(inputDate);
container.append(labelLicence);
container.append(inputLicence);
container.append(labelDateStage);
container.append(inputDateStage);
}));
 
 
if($('#delete').click(function() {
if(number!=1) {
$('label[name="driver'+number+'"').remove();
$('label[name="driver'+number+'names"').remove();
$('input[name="driver'+number+'name"').remove();
$('label[name="driver'+number+'fam"').remove();
$('input[name="driver'+number+'famil"').remove();
$('label[name="driver'+number+'otch"').remove();
$('input[name="driver'+number+'otchestvo"').remove();
$('label[name="driver'+number+'dateborn"').remove();
$('input[name="driver'+number+'dateborns"').remove();
$('label[name="driver'+number+'licen"').remove();
$('input[name="driver'+number+'licence"').remove();
$('label[name="driver'+number+'stage"').remove();
$('input[name="driver'+number+'stages"').remove();
$('#alldrivers')
number = number -1;
}
}));


Да он написан ужасно , но работает. И вообщем проблема в чём , эти поля создаются через javascript , а мне нужно получить их значения в php.Но прописывать вручную не вариант ведь я не знаю сколько человек создаст полей , зато об этом знает переменная number, как мне получить ее в php, или если знаете другие варианты напишите плс.
  • Вопрос задан
  • 118 просмотров
Пригласить эксперта
Ответы на вопрос 2
@andreysuha
Что то знаю
ajax с фронта отправляешь на сервере ловишь и используешь.
Ответ написан
TheRikipm
@TheRikipm
Backend джун
1) Самое очевидное: передавать переменную number в hidden input с помощью JS.

2) Можно и без hidden input,а, но костыльным способом. Через цикл проверяем до какого значения переданы данные с помощью isset.
$number = 0;
$findEndFlag = false;
while(!$findEndFlag)
{
    if(isset($_POST['driver'.$number+1.'name']))
    {
        $number++;
    }
    else
    {
        $findEndFlag = true;
    }
}


Если можете изменять JS код то настоятельно рекомендую первый способ

UPD: Можно написать еще лучше
$number = 0;
while(isset($_POST['driver'.$number+1.'name']))
{
    $number++;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы