4

在表单提交行为方面,我偶然发现了 knockoutjs 和 jquery mobile 之间的明显不兼容。

考虑以下标记:

<form data-bind="submit: myKoSubmitAction">
   <!-- form fields here -->
</form>

目的是敲除阻止服务器发布/获取,而是调用 myKoSubmitAction。jqm 也将阻止仅针对 jqm 的标准提交行为,原因是表单提交被 ajax 请求替换。

因此,虽然淘汰赛(大概)成功地阻止了标准服务器请求,但它未能阻止 jqm 发送 ajax 请求。

我在一个谷歌小组中找到了这个问题的答案,并认为它也应该在 SO 上。见下文

4

2 回答 2

5

您也可以添加data-ajax="false"<form>元素中。

请参阅提交表格

于 2013-01-11T23:46:52.497 回答
4

我能找到的最佳解决方案是以下自定义 ko 绑定:

//This binding fixes apparent incompatibility between knockout and jqm
ko.bindingHandlers.jqmsubmit = {
  init: function (el, accessor, allbindings, vm) {
    ko.bindingHandlers.submit.init(el, accessor, allbindings, vm);
    $(el).submit(function (e) {
        // prevent the submit behavior
        e.preventDefault();
        e.stopPropagation();
        return false;
    });
  }
};

用于代替标准提交 ko 绑定:

<form data-bind="jqmsubmit: myKoSubmitAction">
  <!-- form fields here -->
</form>
于 2012-06-10T07:30:17.247 回答