javascript - 在 jQuery 的 .each() 中的函数完成后,如何使函数返回 true?

标签 javascript jquery knockout.js each

我正在使用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/

相关文章:

javascript - JQuery '.load()' 不工作

javascript - 从 Chrome 内容脚本 "isolated world"内部更新 Knockout.js 可观察值

javascript - 使用 Knockout 将数据从数据库加载到 DropDownList

javascript - 使用 python 或 javascript 从文本中提取困难的英语单词以构建词汇

javascript - 在不使用 eval() 的情况下访问串联的属性名称

javascript - 分开约会! (实际上是一个字符串)

javascript - JQuery 不显示/隐藏元素

javascript - Knockout.js - 对象数据存储最佳实践

javascript - 菜单滑出后使按钮中的箭头指向下方

javascript - 为什么在 Google Chrome Android 中解锁 GPS 访问权限后 getCurrentPosition() 失败