Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.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记录,espace空记录_Javascript_Html_Arrays_Json_Forms - Fatal编程技术网

来自javascript的json记录,espace空记录

来自javascript的json记录,espace空记录,javascript,html,arrays,json,forms,Javascript,Html,Arrays,Json,Forms,我希望将输入记录到JSON数组中的表单中,但我不知道为什么它会用{}记录空项,这就是我想在以后使用视图表单时遇到的问题 我的javascript代码: function update_CF_Data(CF_SortablesForm){ var mySelector = $("#cf-sortables-form"); var data_array = new Array(); $("#cf-sortables-form :input").not("#cf-sortabl

我希望将输入记录到JSON数组中的表单中,但我不知道为什么它会用{}记录空项,这就是我想在以后使用视图表单时遇到的问题

我的javascript代码:

function update_CF_Data(CF_SortablesForm){
    var mySelector = $("#cf-sortables-form");
    var data_array = new Array();
    $("#cf-sortables-form :input").not("#cf-sortables-form :input[class=optionprix]").each(function(){

        var optionPrix = $(this).siblings("input.optionprix").val();
        var item = {};
        item['name'] = $(this).attr('name');
        item['value'] = $(this).attr('value');

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

        data_array.push(item);

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

};
html表单:

<form id="cf-sortables-form">
<ul>
    <li class="ui-state-default">
    <small>Radio Buttons</small>
    <p><input class="cf-required-checkbox" checked="checked" type="checkbox" name="required---4969523" id="required---4969523"> <label for="required---4969523">Champs Obligatoire</label></p>
    <input type="text" name="radio-buttons-label---4969523___required" value="Utilisateurs :">
        <ul id="cf-radio-buttons" class="ui-sortable">
        <li class="ui-state-default">
            <input type="text" class="optionname" name="single-radio-button---4969523" value="1 ou 2">
            <img src="images/icon-euro.png" alt="Prix" width="16" height="16">
            <input type="text" class="optionprix" name="single-radio-button---4969523" value="0">
            </li>
        </ul>
    <button class="cfButton button" data-type="single-radio-button"><i class="booked-icon booked-icon-plus"></i>&nbsp;&nbsp;Radio Button</button>
    </li>
    <li class="ui-state-default">
    <small>Checkboxes</small>
    <p><input class="cf-required-checkbox" checked="checked" type="checkbox" name="required---8940009" id="required---8940009"> <label for="required---8940009">Champs Obligatoire</label></p>
    <input type="text" name="checkboxes-label---8940009___required" value="Options Payantes :">
        <ul id="cf-checkboxes" class="ui-sortable">                         
            <li class="ui-state-default">
            <input type="text" class="optionname" name="single-checkbox---8940009" value="Option 1" optionprix="5">
            <img src="images/icon-euro.png" alt="Prix" width="16" height="16">
            <input type="text" class="optionprix" name="single-checkbox---8940009" value="5">
            </li>                         
        </ul>
    <button class="cfButton button" data-type="single-checkbox"><i class="booked-icon booked-icon-plus"></i>&nbsp;&nbsp;Checkbox</button>
    </li>
    <li class="ui-state-default">
    <small>Paragraphe de texte</small>
    <p><input class="cf-required-checkbox" checked="checked" type="checkbox" name="required---6402519" id="required---6402519"> <label for="required---6402519">Champs Obligatoire</label></p>
    <input type="text" name="paragraph-text-label---6402519___required" value="Remarque éventuelle :">
    </li>
</ul>
</form>
我通过分析表单中的每个输入进行搜索,但我仍然不知道为什么它会记录空数组


如果项等于{}?

问题在发现我的问题是从按钮出现后得到修复,也许我可以找到一种方法来查看/避免记录

我不知道为什么,但是javascript将每个按钮记录为一个空对象,所以我只是在jquery to filter按钮上添加了一个新的.not条件,这没关系

$("#cf-sortables-form :input").not("#cf-sortables-form :input[class=optionprix]").not("#cf-sortables-form :button").each(function(){
您可以检查这个jsfiddle=>

Demo:-我在日志中没有看到任何空对象。顺便说一句,那些{}不是arraysP.s的对象。您的HTML存在一些问题,例如,多个具有相同名称属性的文本框…您可能需要花一些时间来整理它。谢谢ADyson,您帮助我更清楚地了解了您的JSFIDLE。正如您在示例中所写的,它不是问题,它是不可见的,因为当我在这里编写代码时,我在不知道的情况下删除了导致问题的部分。这部分是我的原始代码中显示的两个按钮。我编辑了我的问题以显示它们。我不知道为什么,但是我的javascript将每个按钮都记录为空对象,所以我在jquery部分添加了另一个not条件,它工作得很好。啊,我明白了。从这些按钮中获取空对象的原因很简单,因为它们没有名称或值属性,而这些是您的项对象从输入中记录的唯一内容。如果源元素上不存在这些属性,则不会在该项上创建新属性。如果您希望在执行代码时使代码更简洁、更高效,而不是使用复杂的not语句来排除某些内容,您可以简单地给出所有希望包含同一CSS类的字段,然后简单地选择该类的所有元素,例如$.cf输入或其他
$("#cf-sortables-form :input").not("#cf-sortables-form :input[class=optionprix]").not("#cf-sortables-form :button").each(function(){