<input type="text" name="kcl" value="${kcl }" maxlength="50" onchange='kctotal(this);' />
//计算库存的合计
function kctotal(e){
var pattern=/(^-?[1-9]{1}\d*\.\d+$)|(^-?0\.\d+$)|(^-?[1-9]{1}\d*$)|(^0$)/; //验证double的正则
var kcls=document.getElementsByName("kcl");
var kchj=document.getElementById("kchj").value;
var tem=0;
  if(pattern.test(e.value)==false){
  alert("库存量必须为数字");
  e.value=0;
  e.focus(); 
  return false;
  }
  else{
  for(var i=0;i<kcls.length;i++){
  if(kcls[i].value!=""){
                tem+=kcls[i].value*1;
  }
  }

    document.getElementById("kchj").value=tem;
  }
   }

代码 如上  问题是e.focus() 无法获取焦点  求问题的原因

解决方案 »

  1.   

    可能你的pattern.test(e.value)==false匹配错误,      e.focus();  没有执行到。
      

  2.   

    var kchj=document.getElementById("kchj").value;这里没对象  注释掉后谷歌可以
      

  3.   

    可能是ie的问题
    试试这样
    f(pattern.test(e.value)==false){
              alert("库存量必须为数字");
              e.value=0;
              e.focus(); 
              e.focus();//两次
              return false;
          }