2012-01-31 3 views
0

Скажем, у меня есть форма, как это:В Sencha Touch, как мне сделать расчет с входами, полученными от полей формы?

var Sum1 = new Ext.form.FormPanel({ 
    id: 'Sum1', 
    items: [{ 
     xtype: 'fieldset', 
     title: 'Step 1: Calculating The Sum', 
     items: [{ 
      xtype: 'numberfield', 
      name: 'num1', 
      label: 'First Number' 
     },{ 
      xtype: 'numberfield', 
      name: 'num2', 
      label: 'Second Number' 
     },{ 
      xtype: 'numberfield', 
      name: 'num3', 
      label: 'Third Number' 
     },{ 
      xtype: 'numberfield', 
      name: 'num4', 
      label: 'Fourth Number' 
      },{ 
      xtype: 'button', 
      name: 'CalcSum', 
      ui: 'Confirm', 
      text: 'Calculate Sum', 
      handler: function() { 
       Ext.getCmp('Total').setValue('1'); 
      } 
     }] 
    },{ 
    xtype: 'fieldset', 
    title: 'Calculated Total', 
    items: [{ 
     xtype: 'textfield', 
     name: 'Total', 
     id: 'Total', 
     placeHolder: 'Your Calculated Total' 
    }] 
}); 

То, что я хочу сделать, это использовать значения num1-4 в какой-то метод, который суммирует их и возвращает значение - которое затем установить в моем текстовом поле Total.

Я очень новичок в Sencha Touch, и я использую Sencha Touch 2.0, так что хотел бы любой помощи.

Спасибо.

+3

вы можете предоставить уникальный идентификатор для каждого numberfield, и вы можете отслеживать это поле число, используя, что соответствующий Id – Nag

+0

@Nag Разве это не то, что делает 'name' атрибут? Но я имел в виду ... как выглядел бы код? Где я могу объявить определение метода и как бы назвать его? Документы для Sencha Touch проходят через занятия и т. Д. ... не так много обычных методов. – marcamillion

+3

Фактически, если вы предоставите идентификатор для этого, вы можете получить это значение в наборе полей с помощью метода getItemId(). Для лучшего понимания обратитесь к следующей ссылке. http://docs.sencha.com/touch/2-0/#!/api/Ext.field.Number – Nag

ответ

0

Я бы слушал метод blur. Этот метод будет вызван после того, как ваше текстовое поле потеряет фокус. Тогда вы можете сделать свое дело и выплюнуть его в поле total?

См API: http://docs.sencha.com/touch/2-0/#!/api/Ext.field.Text

Возможно:

blur: function() { 
    // code here 
} 

или (я думаю лучше)

blur: yourFunctionHere() 

UPDATE 2012-01-30: Вы можете определить это в того же файла или даже по полю:

items: [{ 
     xtype: 'numberfield', 
     name : 'num1', 
     label: 'First Number', 
     blur : function() { 
      console.log('You blurred me!'); 
      // get current value of total field and sum it with me (if I am not null!) 
     } 
    },{ 

Лучший способ - определить одну функцию, вы можете сделать это в том же файле;

items: [{ 
     xtype: 'numberfield', 
     name : 'num1', 
     label: 'First Number', 
     blur : doCalculateTotals() 
    },{ 
+0

Но где я могу определить эту функцию? В том же файле, что и все остальное? – marcamillion

+0

Да, я не использую подход MVC, который вы можете определить в одном файле. В подходе MVC вы должны определить его в контроллере. Но для этого случая ваш штраф в том же файле. – adis