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

标签 javascript jquery html

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

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

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. serializeArray()后如何将字符串转成数组? formData.push({ name: listTypeField, value: inputTypeList }); 不适合我。我要enter image description here

最佳答案

首先我不知道 HTML 中的input type="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!

您必须列出所有输入[type="whatever"] 并在每个实例上执行您的代码,如下所示:

$('form').find('input[type="list"]').each(function() {
    /// This block will be executed on every instance
    var listTypeField = $(this).attr('name'); /// "this" is the current instance
    var inputTypeList = $(this).val();
    formData.push({ name: dateTypeField, value: inputTypeList.split(',') });
});

希望对您有所帮助。

关于javascript - 在 JavaScript 中将 JSON 字符串转换为多步形式的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52705418/

相关文章:

javascript - 按钮不应该调用 php 函数

php - 记住 cookie 中的表单值以便稍后完成

javascript - .css() 不是函数 [jQuery]?

html - Google 图表仪表板未扩展至 100% 高度?

javascript - 如何启动 javascript :alert box only if a certain word is typed into the input field?

javascript - 如何从 ReactJS setState 中查找对象数组的长度?

javascript - 在 Angular 中通过 $scope 安全地使用 eval()

javascript - 在文本输入字段中显示纬度和经度

javascript - 外部旋转 div 内的内部 div 在使用 jQuery UI 拖动时不跟随鼠标

php - 有什么方法可以在 php 中为十进制数运行 for 循环吗?