在形式提交行为方面,我偶然发现knockoutjs和jquery mobile之间明显不兼容。
考虑以下标记:
<form data-bind="submit: myKoSubmitAction">
<!-- form fields here -->
</form>
意图是淘汰会阻止服务器发布/获取,而是调用myKoSubmitAction。 jqm还会阻止jqm的标准提交行为,原因是表单提交被ajax请求替换。
因此,当淘汰赛(可能)成功阻止标准服务器请求时,它无法阻止jqm发送ajax请求。
我在谷歌小组中找到了这个问题的答案,并认为它也应该在SO上。见下文
答案 0 :(得分:5)
您还可以将data-ajax="false"
添加到<form>
元素。
请参阅Submitting Forms。
答案 1 :(得分: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>