Alpaca JS 没有正确地重新排序数组复选框
Alpaca JS is not properly reordering array checkboxes
我有一个 Alpaca JS 表单,其中包含一个项目数组,每个项目都包含一个文本框和一个复选框。出于某种原因,当我使用动态控件更改顺序时,它成功地重新编号了文本框,但没有更改复选框的编号。如果按下用于动态添加新字段的相同顶部按钮,这也会导致分配重复的名称。最终结果是提交表单时传递的数据不正确。我怎样才能解决这个问题以正确地重新编号复选框?
这是羊驼毛配置的示例:
$("#form1").alpaca({
"schema": {
"title": "Testing checkbox array IDs",
"description": "Testbox checkbox array test.",
"type": "object",
"properties": {
"form-fields": {
"title": "Fields",
"description": "These are the fields.",
"type": "array",
"items": {
"type": "object",
"properties": {
"field-name": {
"type": "string",
"title": "Field Name",
"description": "Enter the name for this field.",
"required": true
},
"field-box": {
"type": "boolean",
"title": "Field Box",
"description": "Check this box.",
"default": false
}
}
}
}
}
}
});
我找不到纠正行为本身的方法,但我能够通过向羊驼定义添加 postRender 事件来解决它,如下所示:
"postRender": function(control) {
control.childrenByPropertyId["form-fields"].on("move", function() { $('input[type=checkbox]').each(function(index) { $(this).attr("name", $(this).closest("div:has(*[name])").first().attr("name")) }); });
control.childrenByPropertyId["form-fields"].on("add", function() { $('input[type=checkbox]').each(function(index) { $(this).attr("name", $(this).closest("div:has(*[name])").first().attr("name")) }); });
control.childrenByPropertyId["form-fields"].on("remove", function() { $('input[type=checkbox]').each(function(index) { $(this).attr("name", $(this).closest("div:has(*[name])").first().attr("name")) }); });
}
这有点 hack,但它确实有效,因为父对象确实被分配了正确的名称值,如果名称只是被复制到输入元素中,表单将 post 使用这些值。
我有一个 Alpaca JS 表单,其中包含一个项目数组,每个项目都包含一个文本框和一个复选框。出于某种原因,当我使用动态控件更改顺序时,它成功地重新编号了文本框,但没有更改复选框的编号。如果按下用于动态添加新字段的相同顶部按钮,这也会导致分配重复的名称。最终结果是提交表单时传递的数据不正确。我怎样才能解决这个问题以正确地重新编号复选框?
这是羊驼毛配置的示例:
$("#form1").alpaca({
"schema": {
"title": "Testing checkbox array IDs",
"description": "Testbox checkbox array test.",
"type": "object",
"properties": {
"form-fields": {
"title": "Fields",
"description": "These are the fields.",
"type": "array",
"items": {
"type": "object",
"properties": {
"field-name": {
"type": "string",
"title": "Field Name",
"description": "Enter the name for this field.",
"required": true
},
"field-box": {
"type": "boolean",
"title": "Field Box",
"description": "Check this box.",
"default": false
}
}
}
}
}
}
});
我找不到纠正行为本身的方法,但我能够通过向羊驼定义添加 postRender 事件来解决它,如下所示:
"postRender": function(control) {
control.childrenByPropertyId["form-fields"].on("move", function() { $('input[type=checkbox]').each(function(index) { $(this).attr("name", $(this).closest("div:has(*[name])").first().attr("name")) }); });
control.childrenByPropertyId["form-fields"].on("add", function() { $('input[type=checkbox]').each(function(index) { $(this).attr("name", $(this).closest("div:has(*[name])").first().attr("name")) }); });
control.childrenByPropertyId["form-fields"].on("remove", function() { $('input[type=checkbox]').each(function(index) { $(this).attr("name", $(this).closest("div:has(*[name])").first().attr("name")) }); });
}
这有点 hack,但它确实有效,因为父对象确实被分配了正确的名称值,如果名称只是被复制到输入元素中,表单将 post 使用这些值。