2011-04-28 47 views
1

目前我有一個功能,可以將一個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等?

謝謝, 本。

回答

1

添加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

1

你的意思是這樣的?

希望這會有所幫助。

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; 
    }; 

}