2

使用 Backbone.js,我的表单如下:

<form id="searchBar">
    <input type="search" name="search" id="searchBox" value=""/>
    <input type="text" name="location" id="location" value="City, ST"/>
</form>

并且,按如下方式处理所述表格:

window.FindPlaceView = Backbone.View.extend({

    /*code here*/

    events: {
      "submit form#searchBar" : "processClick"
    },

    processClick: function(e) {
       e.preventDefault();
       console.log("Submitted");
       /*form processing code here*/
    }
});

如果我删除表单中的第二个输入字段,表单将在输入时提交就好了。一旦我将第二个输入添加回表单,就没有骰子了。绑定似乎在这一点上丢失了。

有什么理由让表单中有两个字段会在提交事件绑定上引发循环?这似乎是一个愚蠢的问题,我正在用头撞墙。

我尝试将输入设置为不同的类型,从中剥离所有属性,一切。即使我<input></input>在这里放一个空的,它也会坏掉。

(我应该注意,我这里没有提交按钮,只是想在输入时提交)

想法?

谢谢。

4

1 回答 1

8

您的问题与backbone.js 无关,而是与浏览器的工作方式有关:

从 Jquery 提交方法文档

根据浏览器的不同,如果表单只有一个文本字段,或者只有当存在提交按钮时,Enter 键可能只会导致表单提交。界面不应依赖此键的特定行为,除非问题是通过观察按下 Enter 键的 keypress 事件来强制执行的。

当然有这样的问题:

在这里您可以找到一些解决方法,如何在没有提交按钮的情况下在 Enter 上提交表单:

于 2012-09-11T20:59:19.287 回答