只在div内添加某些输入

只在div内添加某些输入

问题描述:

目前我有一个功能,可以将一个div内的所有输入(inputsite)相加,然后从另一个输入(siteinput)中减去该总数。这很好,但我已经添加更多的输入到div将包含文本;这将调用“不是一个可读号码”警报:只在div内添加某些输入

function site_change() {{ 
     var sites= document.getElementById('sitesinput').value;  
     var sum= 0; 
     var inputs= document.getElementById('inputsite').getElementsByTagName('input'); 
     for (var i= inputs.length; i-->0;) { 
      var v= inputs[i].value.split(',').join('.').split(' ').join(''); 
      if (isNaN(+v)) 
       alert(inputs[i].value+' is not a readable number'); 
      else 
       sum+= +v; 
     } 
     var phones= document.getElementById('phonesinput').value; 
     document.getElementById('siteresult').innerHTML = phones-sum; 
    }; 

} 

需要被包括输入的一个例子是:

<input name="site1" type="text" size="3" value="0" /> 

而这需要排除:

<input name="site1PC" type="text" size="7" maxlength="7"/> 

如何调整功能,使它只拾取site1,site2,site3等,而不是site1PC,site2PCsite3PC等?

谢谢, 本。

添加if (inputs[i].getAttribute('name').match(/^site\d+$/))

function site_change() { 
     var sites= document.getElementById('sitesinput').value;  
     var sum= 0; 
     var inputs= document.getElementById('inputsite').getElementsByTagName('input'); 
     for (var i= inputs.length; i-->0;) { 
      if (inputs[i].getAttribute('name').match(/^site\d+$/)) 
      { 
      var v= inputs[i].value.split(',').join('.').split(' ').join(''); 
      if (isNaN(+v)) 
       alert(inputs[i].value+' is not a readable number'); 
      else 
       sum+= +v; 
      } 
     } 
     var phones= document.getElementById('phonesinput').value; 
     document.getElementById('siteresult').innerHTML = phones-sum; 
    }; 

} 
+0

这是DOM加里!谢谢!! – Bifterss 2011-04-28 10:16:52

你的意思是这样的?

希望这会有所帮助。

function site_change() {{ 
     var sites= document.getElementById('sitesinput').value;  
     var sum= 0; 
     var inputs= document.getElementById('inputsite').getElementsByTagName('input'); 
     for (var i= inputs.length; i-->0;) { 
      if(input.hasClass('ignore')){return;} // looking for this(give your input class='ignore' to be excluded. 

      var v= inputs[i].value.split(',').join('.').split(' ').join(''); 
      if (isNaN(+v)) 
       alert(inputs[i].value+' is not a readable number'); 
      else 
       sum+= +v; 
     } 
     var phones= document.getElementById('phonesinput').value; 
     document.getElementById('siteresult').innerHTML = phones-sum; 
    }; 

}