【问题标题】:Javascript match with wildcardJavascript 与通配符匹配
【发布时间】:2011-09-09 22:40:28
【问题描述】:

您好,感谢您的关注。

我需要使用 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;
    };

Match函数错了吗?

谢谢, B.

【问题讨论】:

  • 为什么你所有的输入都有相同的ID?为什么要创建变量sites 然后不使用它?
  • 对,您应该为所有人设置不同的 id,或者使用包含所有这些的 id 的 division,然后使用 name 属性创建 select

标签: javascript forms match textinput


【解决方案1】:

您的正则表达式有点偏离(使用[] 阻止字符,但您实际上想找到方括号,因此需要对其进行转义。$ 需要在末尾)。试试:

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

【讨论】:

  • 辛苦了 - 谢谢!顺便说一句 - 它们的 ID 并不相同 - 懒惰的复制和粘贴我很害怕,并且 var 站点是在测试某些东西时遗留下来的!!!!!!
猜你喜欢
  • 2012-10-03
  • 2020-10-21
  • 2018-01-01
  • 2011-03-19
  • 1970-01-01
  • 1970-01-01
  • 2012-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多