Javascript 敲除和JQuery UI拖放表单生成器
我想使用knockout和jqueryui实现一个表单生成器 我找到了敲除可排序插件以及更多的材料,并为表单生成器实现了一个框架 基本上,我有一个可观察数组,它保存所有可用字段类型及其属性,还有一个数组保存已添加到表单中的控件。我添加了一个绑定,只需单击它就可以为我添加一个字段,这样可以节省快速用户的拖放时间。此外,还会在添加的字段上显示一个单击事件,该事件将转到字段详细信息(现在仅显示警报) 我想为添加到表单中的每个表单元素分配一个id。如果将另一个元素添加到表单中,则该元素的id应增加;如果表单中的元素被重新排列,则元素的id也应更改 我的问题是我应该在哪里以及如何执行此ID分配,然后重新分配,以便每次添加或移动新字段时,表单元素的ID都是连续的 我假设我可以为绑定处理程序中删除的每个元素分配一个id,但以后如何控制它呢Javascript 敲除和JQuery UI拖放表单生成器,javascript,jquery,jquery-ui,knockout.js,knockout-sortable,Javascript,Jquery,Jquery Ui,Knockout.js,Knockout Sortable,我想使用knockout和jqueryui实现一个表单生成器 我找到了敲除可排序插件以及更多的材料,并为表单生成器实现了一个框架 基本上,我有一个可观察数组,它保存所有可用字段类型及其属性,还有一个数组保存已添加到表单中的控件。我添加了一个绑定,只需单击它就可以为我添加一个字段,这样可以节省快速用户的拖放时间。此外,还会在添加的字段上显示一个单击事件,该事件将转到字段详细信息(现在仅显示警报) 我想为添加到表单中的每个表单元素分配一个id。如果将另一个元素添加到表单中,则该元素的id应增加;如果
$(element)[0].id = 'field-nr-' + globalVariable++;
这也意味着我必须更改我试图避免的可淘汰排序插件
代码在这里:如果我理解正确,那么您可能可以使用
$index
可观察的,在foreach
中绑定时可用
因此,您可以绑定如下内容:
<table style="width : 100%" data-bind="attr: { id: 'field-nr-' + $index() }" >
在拖动字段时,id将根据其在observableArray中的位置保持更新
我更新了你的提琴(并更新了KO版本),以显示
td
:中的值,我如何在javascript中为所选字段获取此id?谢谢。如果您需要用JavaScript表示一个id,那么一个好的选项是这个答案的索引扩展名。您可以使用类似的方法来填充id,而不使用$index
(该答案来自$index可用之前)。否则,您可能会偷偷摸摸地将其填充到一个“假”绑定(`data bind=“updateIndex:id($index())”)中。。。我不会想到一个假的自定义绑定来更新ID。