18

私のページには次のようなフォームがあります。

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

JS スクリプトにこのコードがある場合 (もちろん、無関係なコードをすべて削除し、このコードのみで再作成できることを確認するためにテストしました。通常、.get や .post などのコードがさらに含まれます。機能):

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

フォームが送信されると、ページは次のような奇妙な URL にリダイレクトされます。?ko_unique=1

スクリプトからサミーの部分を削除すると、これは起こりません。イベントのバブリングと、サミーとノックアウトの両方が onSubmit をフックし、ブラウザが最後に呼び出された関数からの戻り値のみを尊重していることに関係があると思います。

4

1 に答える 1

49

SOで多くの検索を行った後、ここで答えが見つからなかったので、最終的にこれを見つけました:

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 に答える