CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

简单js计算:onchange时计算正确,onpropertychange时计算错误!

楼主smile9961(good life)2006-03-09 11:31:59 在 .NET技术 / ASP.NET 提问

该程序的目的是实现:用obj输入框用来记录   tmp1,tmp2和(实际中我的tmp输入框会有很多个,所以,我用last来记录某一tmp输入框在修改前的值;并且想将结果(所有输入值的总和)在tmp的onpropertychange中显示到obj输入框)  
   
  function   retsetMe(tmp)   用于处理用户的isNaN输入;  
  function   recordlast(last,   tmp)   记录tmp在修改前的值;  
  function   calculate(obj,   last,   tmp)   计算,并将结果显示到obj输入库  
   
  现将程序重贴一遍:  
   
  <HTML>  
  <HEAD>  
  <script   language="javascript">  
   
  function   calculate(obj,   last,   tmp)  
  {  
  var   oValue   =   obj.value;  
  var   lValue   =   last.value;  
  var   tValue   =   tmp.value;  
   
  if(tValue   ==   ""){ tValue   =   0; }  
  else  
  { if(isNaN(tValue)) {tmp.value   =   0; }  
  else  
  { var   ret   =   oValue   -   (lValue   -   tValue)     ;  
  obj.value   =   ret;  
  }  
  }  
  }  
   
  function   recordlast(last,   tmp)  
  {  
  if(isNaN(tmp.value)   ||   tmp.value=="") {last.value   =   0;}  
  else  
  {  
  last.value   =   tmp.value;  
  }  
   
  tmp.select();  
  }  
   
  function   retsetMe(tmp){  
   
  if(isNaN(tmp.value)){ tmp.value=0; }  
  }  
   
  </script>  
  </HEAD>  
  <body>  
  <form   id="Form1">  
  obj:<INPUT   id="obj"   type="text"   disabled   name="obj"   runat="server">   tmp:<INPUT   id="last"   disabled   type="text"">  
  tmp1:<INPUT   id="tmp1"   onfocus="recordlast(last,   this);"   type="text"   onchange="retsetMe(this);calculate(obj,   last,   this);"  
  value="0">   tmp2:<INPUT   id="tmp2"   onfocus="recordlast(last,   this);"   type="text"   onchange="retsetMe(this);calculate(obj,   last,   this);"  
  value="0">  
  </form>  
  </body>  
  </HTML>  
  问题点数:100、回复次数:6Top

1 楼fangbuge(窗外的雨)回复于 2006-03-09 11:54:25 得分 25

那就在onchange里把总和计算出来,就不用那个onpropertychange了Top

2 楼smile9961(good life)回复于 2006-03-09 11:59:49 得分 0

问题是当用户更改了某个tmp后,直接点其它某个按钮提交页面,这时显示的总和就和实际各tmp的加总值不一致...Top

3 楼nameone(过客)回复于 2006-03-09 12:42:56 得分 25

UPTop

4 楼iuhxq(小灰)回复于 2006-03-09 12:59:08 得分 50

<script   language="JavaScript">  
  <!--  
  function   add()  
  {  
  document.getElementById('c').value   =   Number(document.getElementById('a').value)   +   Number(document.getElementById('b').value);  
  }  
  //-->  
  </script>  
  <input   type="text"   id="a"   onchange="add();"   onkeypress="add();"   onkeyup="add();"><input   type="text"   id="b"   onchange="add();"   onkeypress="add();"   onkeyup="add();"><input   type="text"   id="c">  
  Top

5 楼smile9961(good life)回复于 2006-03-09 13:29:09 得分 0

问题解决了,其实很简单,每次改变都重算一遍就行了;这样虽然笨点但很实用:  
  -----------------------------------------------------------  
  .aspx:  
  <script   language=javascript>  
  function   calculate(obj,tmp){  
  resetMe(tmp);  
  var   ret=0;  
  var   tmps=document.getElementById('Table1').getElementsByTagName("input");  
  for(var   i=0;   i<tmps.length;   i++){ret   =   ret   -(-   tmps[i].value);}  
  obj.value=ret;  
  }  
   
  function   resetMe(tmp){  
  if(isNaN(tmp.value)){tmp.value=0}  
  }  
  </script>  
   
  .vb  
  If   Not   IsPostBack   Then  
          Dim   script   As   String  
           
          script   =   "calculate(objs,   this);"  
          tmp0.Attributes.Add("onpropertychange",   script)  
          tmp1.Attributes.Add("onpropertychange",   script)  
        ...  
   
          script   =   "this.select();"  
          tmp0.Attributes.Add("onfocus",   script)  
          tmp1.Attributes.Add("onfocus",   script)  
       
  End   If  
   
  Top

6 楼smile9961(good life)回复于 2006-03-09 13:39:13 得分 0

对了我的文本框还有长度的限制:  
  <INPUT   type="text"   id="tmp0"   runat="server"   value=0   maxlength=7>  
  <INPUT   type="text"   id="tmp1"   runat="server"   value=0   maxlength=7>  
  Top

相关问题

  • JS的计算问题
  • JS如何计算字符串的字节长度
  • js中如何调用或打开WINDOWS的计算器啊?
  • 在JS中,2的4次方如何计算?
  • 一个奇怪的js计算函数,求救..急,在线等
  • js parseFloat计算有问题?在线等待!1.09+1.98=3.0700000000000003
  • 如何用js计算总和呢?谢谢!
  • 计算客户端(js)和服务器端(asp)代码
  • 关于计算的值 在JS里面的调用(B/S)
  • 怎么计算结果是这样的,对js不熟悉

关键词

  • 时计算

得分解答快速导航

  • 帖主:smile9961
  • fangbuge
  • nameone
  • iuhxq

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo