我正在使用knockout.js。我的表单中有几个可编辑的网格,并且这些网格内的字段名称很重要,因此使用 uniqueName
不是一个选项。
所以我正在做的是在用户单击“提交”时调用一个函数来重命名字段。
function renameFields(o, index) {
var el_name = $(o).attr('name');
var name_index = el_name.lastIndexOf('_') + 1;
$(o).attr('name', el_name.substring(0, name_index) + index);
}
function Submit() {
self.submit = function() {
// Use unique AND meaningful input/textarea [name]s in .grids.
window.index_arr = [];
$('.grid').each(function() {
$(this)
.children('.row')
.each(function(i){
window.index_arr.push(i);
$(this)
.find('input, textarea')
.each(function() {
renameFields($(this), window.index_arr[i]);
})
})
});
// Submit the form
return true;
}
}
renameFields
工作正常,但在每个字段上调用之前都会返回 true
。
最佳答案
让 Knockout 完成保持属性索引最新的肮脏工作,如下所示:
HTML:
<div id="grid" class="grid">
<div class="row" data-bind="foreach:rows">
<input data-bind="attr: { name: 'string_' + $index() }">
<textarea data-bind="attr: { name: 'string_' + $index() }">
</div>
</div>
查看模型:
var vm = {
rows: ko.observableArray()
};
ko.applyBindings(vm, document.getElementById("grid"));
关于javascript - 在 jQuery 的 .each() 中的函数完成后,如何使函数返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21021798/