18

我的页面上有这样的表格:

<form data-bind="submit: AddFolder"></form>

如果我的 JS 脚本中有这段代码(当然我已经删除了所有不相关的代码并进行了测试以确保我仍然可以只使用这段代码重新创建,通常你会在这里有更多的代码,比如 .get 和 .post职能):

Sammy(function() {
}).run();

提交表单后,页面会重定向到一个奇怪的 URL,例如?ko_unique=1

如果我从脚本中删除 Sammy 部分,则不会发生这种情况。我认为这与事件冒泡有关,Sammy 和 Knockout 都挂钩了 onSubmit,而浏览器只尊重最后一个调用函数的返回值。

4

1 回答 1

49

经过大量搜索,并没有在这里找到任何答案,我最终找到了这个:

https://groups.google.com/forum/?fromgroups#!topic/sammyjs/EYW-2Ygk3z8

并将我的代码修改为:

Sammy(function() {

    // Override this function so that Sammy doesn't mess with forms
    this._checkFormSubmission = function(form) {
        return (false);
    };

}).run();

这样当我在我的页面上提交表单时,Sammy 就不会尝试做任何特别的事情。由于我使用的是 Knockout,因此我不打算将 Sammy 用于任何形式。如果您想要更复杂的代码或插件版本,您可以查看上面的 URL,但对我来说,我怀疑对于大多数使用 KO 的人来说,禁用这个 Sammy 功能会更少代码,更容易。

于 2013-02-13T19:29:13.993 回答