使用其他输入值动态创建输入字段

时间:2018-12-28 05:42:06

标签: javascript php arrays json

我有一个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 中。

1 个答案:

答案 0 :(得分:0)

使用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字符串。

然后在“ custom_1”输入字段中将base64编码的字符串设置为值。