Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中将JSON字符串转换为多步骤形式的数组?_Javascript_Jquery_Html - Fatal编程技术网

在JavaScript中将JSON字符串转换为多步骤形式的数组?

在JavaScript中将JSON字符串转换为多步骤形式的数组?,javascript,jquery,html,Javascript,Jquery,Html,我正在研究动态多步骤表单。 我在做什么: 1.使用AJAX创建输入字段 2.从用户获取输入字段信息 3.序列化数组() 4.提交(POST):提交前,将输入值转换为所需格式,例如:输入type=date转换为utc格式,工作正常 我有多步骤格式,在第一步中,我有两个字段,其中有学生编号,Idtype=list(创建数组),然后单击next按钮,然后我有第二步表单,其中有姓名、日期、地址。 我正在使用下面的代码转换提交日期 var dateTypeField = $('form').find('i

我正在研究动态多步骤表单。 我在做什么: 1.使用AJAX创建输入字段 2.从用户获取输入字段信息 3.序列化数组() 4.提交(POST):提交前,将输入值转换为所需格式,例如:输入
type=date
转换为utc格式,工作正常

我有多步骤格式,在第一步中,我有两个字段,其中有学生编号,Id
type=list
(创建数组),然后单击next按钮,然后我有第二步表单,其中有姓名、日期、地址。
我正在使用下面的代码转换提交日期

var dateTypeField = $('form').find('input[type="date"]').attr('name');
        var dateField = $('form').find('input[type="date"]').val();
        var dateFormat = '';
if (dateField) {
                dateFormat = moment.utc(dateField).format('YYYY-MM-DDThh:mm:ss.SSSZ');
            }
            else {
                dateFormat = null;
            }
这很好用

问题:在第一步中,我有两个输入字段,其中包含
type=list
,以及字符串中的值,我想在单击提交时将字符串转换为数组。这就是我正在做的

var listTypeField = $('form').find('input[type="list"]').attr('name');
            var inputTypeList = $('form').find('input[type="list"]').val();
            listTypeField = inputTypeList.split(',');
            var listFormat = inputTypeList.split(',');

            var formData = $form.serializeArray();

            formData.push({ name: dateTypeField, value: dateFormat });
            formData.push({ name: listTypeField, value: inputTypeList });

问题:1。我有两个type=list的字段,但使用
$('form')只显示一个字段。find('input[type=“list”]”)。attr('name')
2。溢出是未定义的。3.如何在序列化数组()后将字符串转换为数组
formData.push({name:listTypeField,value:inputTypeList})不为我工作。我想

首先,我不知道什么是HTML中的输入类型=“list”,也许您有一个输入列表,在这种情况下,选择器应该是$('input[list]')

其次,如果您有多个相同类型的输入(例如[type=“radio”]),您的方法将始终从最后一个输入中提取名称:

<input type="radio" name="radio2" value="34" />
<input type="radio" name="radio7" value="45" />
// .......
console.log($('input[type="radio"]).length); /// 2
console.log($('input[type="radio"]).attr('name'); /// "radio7" --> Always the name from last element!

我希望这会有所帮助。

我使用switch case来解决这个问题

                var name = input.getAttribute('name');
                var value;
                var type = input.dataset.type;
                switch (type) {
                    case "text":
                         value = input.value;
                        break;
                    case "list":
                         value = input.value.split(',');
                        break;
                    case "date":
                        value= input.value ? moment.utc(input.value).format('YYYY-MM-DDThh:mm:ss.SSSZ') : null;
                        break;
                }

                object[name] = value;
                var name = input.getAttribute('name');
                var value;
                var type = input.dataset.type;
                switch (type) {
                    case "text":
                         value = input.value;
                        break;
                    case "list":
                         value = input.value.split(',');
                        break;
                    case "date":
                        value= input.value ? moment.utc(input.value).format('YYYY-MM-DDThh:mm:ss.SSSZ') : null;
                        break;
                }

                object[name] = value;