Сопоставление Javascript с подстановочным знаком

#javascript #forms #match #textinput

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

Является ли функция Сопоставления неверной?

Спасибо, Б.

Комментарии:

1. Почему все ваши входные данные имеют одинаковый идентификатор? И почему вы создаете переменную sites , а затем не используете ее?

2. Правильно, у вас должны быть разные идентификаторы для всех или иным образом создать division с идентификатором, который оборачивает все это, а затем select использовать name свойство.

Ответ №1:

Ваше регулярное выражение немного не соответствует (использует [] символы блоков, но на самом деле вы хотите найти квадратные скобки, поэтому их нужно экранировать. И $ должно быть в конце). Попробуйте:

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

Комментарии:

1. Получилось вкусно — спасибо! КСТАТИ — не у всех у них одинаковый идентификатор — ленивое копирование и вставка меня пугают, а сайты var остались от тестирования чего-то!!!!!!