来自javascript的json记录,espace空记录
我希望将输入记录到JSON数组中的表单中,但我不知道为什么它会用{}记录空项,这就是我想在以后使用视图表单时遇到的问题 我的javascript代码:来自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
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> 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> 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(){