如何防止表单提交(How to prevent form submit)

2019-09-17 07:57发布

我使用KnockoutJS与SammyJS一个网页应用程序。

在HTML我有形式标记为后续

<form data-bind='submit: search'>
  <label>Find user:</label>
  <input data-bind='value: name' />
</form>

在我的视图模型,定义了两个函数和萨米路线网址

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());

所有的代码工作很好,直到我在文本框中输入内容,然后提交表单。 我希望警告窗口后无网址浏览,但URL被改变像这样的“http://本地主机:8258 /未定义” 我原来的网址为“http://本地主机:8258”

我怀疑萨米URL路由,所以去除萨米代码javascript代码,然后链接不警告窗口后更改。 也许我不明白,萨米是如何工作的。

如何防止链接改变它,这个情况?

Answer 1:

萨米结合本身的形式,使您能够为他们注册路线以及。

<form action="#1234" method="post">

JS:

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

        return false; // avoid form submission
    });

    // ...
}).run();


Answer 2:

我也有这个问题,我发现了一个解决这个答案 。 这里是你如何让Sammy.js独自离开的形式:

Sammy(function() {

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


    // Make Sammy.js leave the forms alone!
    this._checkFormSubmission = function(form) {
        return false;
    };

}).run();

如同它应该:)



文章来源: How to prevent form submit