2011-06-07 154 views
0

嗨,感謝您的期待。Javascript匹配通配符

我需要使用javascript獲取某個表單中的所有表單輸入,輸入被命名爲喜歡這樣:

<input name="site[1]" type="text" size="3" id="sitesinput" value="0" /> 
<input name="site[2]" type="text" size="3" id="sitesinput" value="0" /> 
<input name="site[3]" type="text" size="3" id="sitesinput" value="0" /> 
<input name="site[4]" type="text" size="3" id="sitesinput" value="0" /> 

......

<input name="site[10]" type="text" size="3" id="sitesinput" value="0" /> 

,我有以下至挑選它們並將其添加到其中,但它不起作用,我做錯了什麼:

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

匹配功能錯了嗎?

感謝, B.

+0

爲什麼所有的輸入都有相同的ID?爲什麼你要創建變量'sites'然後不使用它? – davin 2011-06-07 09:51:10

+0

對,你應該有一個不同的id,或者用一個包含所有這些id的'division',然後用'name'屬性'select'。 – R1234 2011-06-07 09:53:57

回答

1

你的正則表達式是有點過(使用[]塊字符,但實際上你要找到方括號所以需要對它們進行轉義。而$需要在年底)。嘗試:

.match(/^site\[\d+\]$/) 
+0

工作過一次 - 謝謝!順便說一句 - 他們並不都具有相同的ID - 懶惰的複製和粘貼我擔心和var站點遺漏了測試的東西!!!!!! – Bifterss 2011-06-07 10:00:18