首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环每个输入的相对记录和更正重复记录

循环每个输入的相对记录和更正重复记录
EN

Stack Overflow用户
提问于 2018-10-14 20:48:03
回答 1查看 29关注 0票数 0

我的表单记录一个JSON数组,包括每个输入的名称和值。我试图根据输入类"optionprix“的相对值为每个输入类"optionname”添加一个"optionprix“属性。

我的html表格:

代码语言:javascript
复制
<div id="sortables-form">
<ul id="sortables"><li>
<input name="checkboxes-label" value="Options" type="text">
<ul id="checkboxes">                         
<li>
<input class="optionname" name="checkbox-2778418" value="Option1" optionprix="5" type="text">
<input class="optionprix" name="checkbox-2778418" value="5" type="text">
</li>
<li>
<input class="optionname" name="checkbox-2778419" value="Option2" optionprix="10" type="text">
<input class="optionprix" name="checkbox-2778419" value="10" type="text">
</li>
<li>
<input class="optionname" name="checkbox-2778420" value="Option3" optionprix="15" type="text">
<input class="optionprix" name="checkbox-2778420" value="15" type="text">
</li>
</ul>
<button class="saveButton" data-type="single-checkbox">Save</button>
</li></ul>
</div>

我的javascript函数:

代码语言:javascript
复制
function update_CF_Data(CF_SortablesForm){
    var mySelector = $("sortables-form");
    var data_array = new Array();
    $("#sortables-form :input").not("#sortables-form :input[class=optionprix]").each(function(){

        var item = {};
        item['name'] = $(this).attr('name');
        item['value'] = $(this).attr('value');

        var optionPrix = $("#sortables-form li input[class=optionprix]").val();

        if ($(this).hasClass('optionname')){
        item['optionprix'] = optionPrix;
        }

        data_array.push(item);

    });
    var sortableContent = JSON.stringify(data_array);
    $('#myparentform').val(sortableContent);

    console.log(data_array);
};

JSON记录:

代码语言:javascript
复制
array(6) { [0]=> array(2) { ["name"]=> string(18) "required---2778418" ["value"]=> string(2) "on" } [1]=> array(2) { ["name"]=> string(26) "checkboxes-label" ["value"]=> string(7) "Options" } [2]=> array(3) { ["name"]=> string(25) "checkbox-2778418" ["value"]=> string(7) "Option1" ["optionprix"]=> string(1) "5" } [3]=> array(3) { ["name"]=> string(25) "checkbox-2778419" ["value"]=> string(7) "Option2" ["optionprix"]=> string(1) "5" } [4]=> array(3) { ["name"]=> string(25) "checkbox-2778420" ["value"]=> string(7) "Option3" ["optionprix"]=> string(1) "5" } [5]=> array(0) { } } 

实际上,所有记录的数据都使用我输入的class="optionprix“的第一条记录,并打印5作为值。

我试图改变我的javascript代码以达到我的目标,但没有成功.

也许我是与排除部分.not有关的(“#sortables form :inputclass=optionprix")

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-14 20:58:58

您每次都得到相同的值,因为在获取相应的$(this)文本框(该迭代的值)时,您没有使用optionprix。可以在siblings()中使用JQuery方法访问相邻元素的值。

兄弟姐妹()

尝尝这个,

代码语言:javascript
复制
function update_CF_Data(CF_SortablesForm){
    var mySelector = $("sortables-form");
    var data_array = new Array();
    $("#sortables-form :input").not("#sortables-form :input[class=optionprix]").each(function(){

        var item = {};
        item['name'] = $(this).attr('name');
        item['value'] = $(this).attr('value');

        //var optionPrix = $("#sortables-form li input[class=optionprix]").val();
        var optionPrix = $(this).siblings("input.optionprix").val();

        if ($(this).hasClass('optionname')){
        item['optionprix'] = optionPrix;
        }

        data_array.push(item);

    });
    var sortableContent = JSON.stringify(data_array);
    $('#myparentform').val(sortableContent);

    console.log(data_array);
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52806966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档