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

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

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

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

 <?php
$json = array(
    'first_name' => 1,
    'last_name' => 1,
    'gender' => 1,
    'email' => '[email protected]',
    '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 при отправке формы. Это означает, что значения не определены заранее и должны быть взяты из других полей ввода формы.

Submitting form and getting individual post parameters is not what I expect. All parameters should be taken into the custom_1 as explained above.

Вы что-нибудь пробовали? HTML-форма, обработчик onSubmit и т. д.

ficuscr 28.12.2018 06:47
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
62
1

Ответы 1

Это просто использовать 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".

Другие вопросы по теме