如何通过jQuery只序列化一个输入值?

axr492tv  于 2022-12-18  发布在  jQuery
关注(0)|答案(1)|浏览(122)

我开始做下拉列表,而不是选择bcz,这是不可能的风格化,但我没有想到未来,现在我发现,如果我想保存数据从形式到数据库,我需要通过$_POST获得id,而不是名称。
例如。我有下拉列表与产品的状态:一个月一个月一个月一个月一个月一个月一个月一个月一个月二个月一个月
如果我想保存所选产品的选择状态,我最好得到状态选项的ID。Bcz我的表是这样的:

item_id | option_value
1       | 1

如果我通过$_POST发送名称为“old”,我需要在插入它之前从另一个表中获得它的ID。
我创建的下拉列表如下:

/* SELECT REPLACED BY DIV JS */

    var select = $('.add-item__select').hide(); // Hide original select options

    // Replace each select by div
    select.each(function() {
        var selectVal = $(this).find('.add-item__select-main').text(),
            name = $(this).attr('name');

        newDropdownDiv = $('<input class="add-item__input-select" name="' + name + '" placeholder="' + selectVal + '" readonly required><i class="arrow down"></i></input>')
            .insertAfter($(this))
            .css({paddingLeft: '0.3em', cursor: 'pointer'});
    });

每个SELECT都在其后添加了INPUT。
如果我想从下拉列表中显示Shosen Vale,我需要以这种方式显示它:

$('.add-item__input-select').val("text copied from list");


在此之后,如果我添加选项的ID输入这样:

$('.add-item__input-select').attr("value", optionID);

然后如果我想序列化form和this is point$('.add-item__form').serializeArray()中的所有字段值,我会得到两个状态结果:name: "status", value: "text copied from list"name: "status", value: optionID

但我只需要选项ID。

我已经为这个结构优化了一切,所以我想问你是否有一些简单的方法如何修复它或我需要修改结构。
我想删除输入,只是改变选择不透明度为0,而不是显示无,并使用选择的形式数据序列化。但然后我将需要取代所有的输入的一些DIV,这将保持所选选项的文本,也改变了一切与它有关。例如,如果用户点击输入的标签显示在它上面。
谢谢你的建议

1hdlvixo

1hdlvixo1#

我找到了一个解决方案,但我有问题,它是工作,只是如果用户不会刷新页面。在DOM是一切相同的刷新后,但serializeArray()只得到输入文本值,而不是值=“ID”后,页面刷新。
我只是从FormData中删除了这些我不需要的值。

// Send formData to upload.php
    $('.add-item__form').on('submit', function() {
        event.preventDefault();
        event.stopPropagation();

        if ( checkFieldsIfNotEmpty() == true ) {
            var formDataFields = $('.add-item__form').serializeArray(), // Get all data from form except of photos
                count = Object.keys(data).length; // count fields of object

            // Fill formData object by data from form
            $.each(formDataFields, function(index, value) {
                if ( value.name === 'category' && !$.isNumeric(value.value) || value.name === 'subcategory' && !$.isNumeric(value.value) ) {
                    // do nothing
                } else if ( (value.name.indexOf('filter') >= 0) && !$.isNumeric(value.value) ) {
                    // do nothing
                }
                else {
                    formData.append(value.name, value.value); // add name and value to POST data
                }

            });

            // foreach - fill formData with photos from form
            $.each(data, function(index, value) {
                formData.append('files[]', value);
            });

            uploadData(formData); // send data via ajax to upload.php
        }
    });

你能给我出个主意吗?

相关问题