在div中仅添加某些输入

时间:2011-04-28 09:54:05

标签: javascript html input

目前我有一个函数可以在div(inputsite)中添加所有输入,然后从另一个输入(siteinput)中减去该总数。这工作得很好,但我已经在包含文本的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"/>

如何调整功能,使其仅选取名为site1site2site3等的功能,而不是site1PCsite2PCsite3PC等?

谢谢, 本。

2 个答案:

答案 0 :(得分: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;
    };

}

答案 1 :(得分: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;
    };

}