【问题标题】:Submitting a form using Sencha Touch使用 Sencha Touch 提交表单
【发布时间】:2011-05-17 06:18:55
【问题描述】:

我想用 Sencha Touch 构建一个简单的表单,并为其附加一个提交处理程序。要么我是 n00b,要么这很难做到。这就是我想要的:

  • onSubmit 处理程序附加到表单,而不是将onClick 处理程序附加到提交按钮
  • 表单提交时取消表单提交。

问题在于常规的 Sencha Touch 按钮根本不是按钮——它们只是一堆 div 和 span。因此,点击提交按钮不会触发原生表单提交。因此,需要将处理程序附加到“按钮”以触发表单上的提交,然后捕获表单的提交以执行我想要的操作。这是可行的,但听起来并不优雅。有更好的方法吗?

第二个问题是事件取消。如何获取提交事件对象的句柄,以便可以在其上调用 preventDefault?在 Sencha Touch 世界中还有其他方法可以做到这一点吗?

【问题讨论】:

  • 我希望你在 Sencha 论坛上发帖,因为 Sencha 问题的流量远比 StackOverflow 多...
  • 感谢您的提示。将此问题交叉发布到 sencha.com/forum/… 将使用响应更新此线程。

标签: forms extjs javascript-framework sencha-touch


【解决方案1】:

如果您想对表单执行标准提交操作,您需要将“standardSubmit”配置属性设置为 true,这将在表单发布时强制执行标准提交。

是的,您必须将事件处理程序附加到按钮,但这很容易。您所要做的就是像这样设置按钮:

{ xtype: '按钮', 文本:'下一个', handler: this.tapHandler //

然后像这样设置一个处理程序:

// Toolbar button handler function
tapHandler: function (button, event) {
        switch (button.text) 
        {
           case "Submit":
               myForm.submit({...config object see API...})
               // to cancel event simply return false
               return false;
               break;

        }
}

【讨论】:

    【解决方案2】:

    您有一个选项“submitOnAction: true”,当用户点击移动设备虚拟键盘上的 Ok/Go 按钮时,您可以提交(适用于 iPhone/iPad)。

    app.views.newItemForm = Ext.extend(Ext.form.FormPanel, {
     submitOnAction: true,
     activeItem: 1, 
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-21
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多