Создание поля ввода динамически с использованием других значений ввода

70
8

У меня есть HTML-форма с несколькими полями ввода и очень специальное поле ввода с именем " custom_1 ".

При отправке формы (до или перед) все значения в других полях ввода должны быть преобразованы в объект JSON и установлены в качестве значения custom_1.

Если значения предопределены, следующий код может сделать то, что я ожидаю.

 <?php
$json = array(
'first_name' => 1,
'last_name' => 1,
'gender' => 1,
'email' => 'myemail@gmail.com',
'phone' => 345345431,
'telephone' => '035w34538',
'address' => 1,
'country' => 1,
'city' => 1,
'postal_code' => 1,
'dob' => '3333-03-03',
'nic' => '333333333V',
'course_provider' => 1,
'course' => 1,
'postal_code' => 10012
);

$custom_values = base64_encode(json_encode($json));
?>

<input type="hidden" name="custom_1" value="<?php echo $custom_values; ?>">

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

Отправка формы и получение отдельных параметров сообщения не то, что я ожидаю. Все параметры должны быть приняты в custom_1, как описано выше.

спросил(а) 2018-12-28T08:42:00+03:00 1 год, 9 месяцев назад
1
Решение
98

Это просто с помощью jquery (конечно, вы можете использовать любую другую библиотеку)

Вот небольшой фрагмент кода:

https://codepen.io/YannickFricke/pen/EGwYgy

Соответствующая часть происходит здесь: мы получаем массив объектов из jQuery. Нам нужно перебрать их, чтобы получить имя сериализованных полей ввода и их текущие значения.

Затем мы сохраняем их в объекте, который впоследствии будет декодирован как JSON, а затем декодирован как значение base64.

let serializedData = $(this).serializeArray();
let myData = {};
serializedData.forEach(function(element) {
// We dont want to serialize the value of the "custom_1" input
if (element.name === 'custom_1') {
return;
}

// Set the data
myData[element.name] = element.value;
});

После этой части мы кодируем объект как json и кодируем его как строку base64.

Затем строка в кодировке base64 устанавливается как значение в поле ввода "custom_1".

ответил(а) 2018-12-28T09:50:00+03:00 1 год, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема