2

Sencha Touch でシンプルなフォームを作成し、送信ハンドラーを追加したいと考えています。私が初心者か、これが驚くほど難しいかのどちらかです。ここに私が欲しいものがあります:

  • 送信ボタンonSubmitのハンドラーではなく、フォームにハンドラーをアタッチするonClick
  • フォーム送信時にフォーム送信をキャンセルします。

問題は、通常の Sencha Touch ボタンはまったくボタンではなく、div と span の集まりにすぎないことです。したがって、送信ボタンをタップしても、ネイティブ フォームの送信は開始されません。その結果、ハンドラーを「ボタン」にアタッチして、フォームで送信を開始し、フォームの送信をキャプチャして、必要なことを行う必要があります。これは実行可能ですが、エレガントに聞こえません。これを行うより良い方法はありますか?

2 つ目の問題は、イベントのキャンセルの問題です。送信イベント オブジェクトのハンドルを取得して、 preventDefault を呼び出すにはどうすればよいですか? Sencha Touch の世界でこれを行う他の方法はありますか?

4

2 に答える 2

1

オプション "submitOnAction: true," を使用すると、ユーザーがモバイル デバイスの仮想キーボードで [OK/Go] ボタンをクリックしたときに送信できます (iPhone/iPad では正常に動作します)。

app.views.newItemForm = Ext.extend(Ext.form.FormPanel, {
 submitOnAction: true,
 activeItem: 1, 
...
于 2011-03-04T09:28:16.637 に答える
1

フォームでスタンド送信アクションを実行する場合は、「standardSubmit」構成プロパティを true に設定する必要があります。これにより、フォームが投稿されたときに標準送信が強制されます。

はい、イベント ハンドラーをボタンにアタッチする必要がありますが、それは非常に簡単です。ボタンを次のように設定するだけです。

{ xtype: 'button', text: 'Next', handler: this.tapHandler //<= ページの共通の 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;

        }
}
于 2011-01-15T18:26:25.100 に答える