关于extjs的监听算值的问题

看上图,点击添加明细出来一行,填写上人数和元/人之后,自动计算出金额;添加第二行,也是一样。最下面应该还有个计算总额文本框,根据每行的的金额,自动计算出来。这个总额的文本... 看上图,点击添加明细出来一行,填写上人数和元/人之后,自动计算出金额;添加第二行,也是一样。最下面应该还有个计算总额文本框,根据每行的的金额,自动计算出来。这个总额的文本框是和上面的金额关联实时变的,有一种方法是用extjs给元/人,加入失焦监听,在更改金额里的值,还有在遍历添加了多少行,取出每行的金额,计算出来加入到总额文本框,但是代码不会写
在来个完整截图,我希望能有个小示例,本人对extjs不是很了解,提高悬赏报答各位
展开
 我来答
luffy1201
推荐于2016-03-25 · TA获得超过1523个赞
知道小有建树答主
回答量:401
采纳率:0%
帮助的人:576万
展开全部

在每一行的“人数”和“元/人”的编辑框添加:

listeners:{//举例为“元/人”下的监听事件,按理说两个都需要的。
    blur:function(t){
       var m = t.getValue();  //获取了多少元1人
       var s = Ext.getCmp('id').getValue();//id是“人数”编辑框的id,获取人数
       var je = m*s;//这里有可能需要强转int,当然看你用什么组件了。  
       Ext.getCmp('jeid').setValue(je);//给金额编辑框赋值
       qjje += je;//这里可以采用简单的方法,通过全局变量记录总金额
       Ext.getCmp('zjeid').setValue(qjje);//给总金额编辑框赋值
   }  
}

 然后另一个也按这个写就行~~~

 

另外告诉你如何遍历取值:

 for(var i=0;i<store.data.length;i++){
  var rec = store.getAt(i);//获取每一个record
  var je = rec.getById("jine");//获取金额的值,这里的“jine”是你定义record里的哈
  //var je = rec.data.jine;//这个等同于上面的那个
  .....剩下的你自己完善吧,每一行的je都取出来了,累加吧~    
}
更多追问追答
追问
Ext.getCmp('money').setValue(m*s);
我使用这段代码怎么不起作用啊,用alert打出来是object,证明没有出错,但是金额框内没有任何显示
追答
alert(m*s)是数字么?
百度网友6bfc944
2013-10-16 · TA获得超过746个赞
知道小有建树答主
回答量:529
采纳率:0%
帮助的人:289万
展开全部
你不觉得 你那个思路很麻烦吗?

我的思路:
你这个页面不属于edit....Panel页面吧
如果是gridPanel页面,那么只有添加 没有修改 合理吗
你的需求,完全可以在添加保存 那里实现
点击保存------将当前这个对象传到后台,有内容,人数,元/人,这些后台都可以获取到。你完全可以在后台里面算出金额。然后执行insert sql,这样不就把金额保存到数据库了吗。然后 gridPanel页面 刷新 不就达到效果了吗

你说的 下面 有个总金额 。那么 这个总金额肯定不可能 单独显示在grid里面对吧,肯定会把这个值显示在bbar里面。那么这个金额完全可以通过后台查询sql 查出来。。为什么会这么做,因为你这个页面肯定是要进行分页的,放在bbar里面的金额 是所有记录的金额,你如果放在别的地方 ,那么我问你 你不分页吗?
追问

给你提供一个完整的图片,这个最上面有个提交,把所有的数据全部填好后点击的,所以在最下面的添加里插入数据就是用js操作,不跟后台交互,我希望能有个小实例,应为我对extjs不太熟悉

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式