如何防止表单提交

Ray*_*Ray 5 sammy.js knockout.js

我正在将KnockoutJS与SammyJS一起用于一个页面应用程序.

在html我有表格标签如下

<form data-bind='submit: search'>
  <label>Find user:</label>
  <input data-bind='value: name' />
</form>
Run Code Online (Sandbox Code Playgroud)

并在我的viewmodel中,声明了两个函数和sammy route url

function ViewModel() {
    var self = this;
    self.name = ko.observable("");
    self.search = function () {
      alert(self.name);
    };

    Sammy(function () {
        this.get('#:id', function () {
           //do something....
        });           
    }).run();
}

ko.applyBindings(new ViewModel());
Run Code Online (Sandbox Code Playgroud)

所有代码都运行良好,直到我在文本框中键入内容然后提交表单.我预计在警报窗口之后没有网址浏览,但网址会更改为"http:// localhost:8258/undefined?" 我原来的网址是"http:// localhost:8258"

我怀疑sammy url路由,所以从javascript代码中删除了sammy代码,然后在警报窗口后url不会改变.也许我不明白sammy是如何运作的.

如何防止url改变这种情况?

Nik*_*iko 5

Sammy将自己绑定到表单,以便您也可以为它们注册路由.

<form action="#1234" method="post">
Run Code Online (Sandbox Code Playgroud)

JS:

Sammy(function() {
    this.post('#:id', function() {
        // do something...

        return false; // avoid form submission
    });

    // ...
}).run();
Run Code Online (Sandbox Code Playgroud)