Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вытащить из формы поля по первому индексу имен 
:(
    Опции темы
barcelona
Дата 17.4.2008, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



Здравствуйте.
У меня возникла следующая проблема. Есть элементы формы типа text, каждое из которых имеет имя типа emparray_emp['id_emp']['value'].  Как мне с помощью функции на JavaScript получить элементы формы, первый индес которых  - конкретное значение id_emp? При этом value может быть любым. То есть у функции есть параметр id_emp, но как вытащить именно эти поля?
Заранее спасибо.
PM MAIL   Вверх
almagnit
Дата 17.4.2008, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 3.4.2008

Репутация: нет
Всего: 7



emparray_emp['id_emp']['value'] для чего вы это реализовываете

просто укажите нужные id и получайте их value
PM MAIL ICQ   Вверх
barcelona
Дата 17.4.2008, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



В том-то всё и дело, что мне нужны имена полей с двойными индексами. От них никуда не деться. В функцию пересылается id_emp, и как получить нужный мне массив - не знаю. Я пробовал так: 
Код

var mname='emparray_emp['+id_emp+'][]';
var fields=document.mainforma[mname];

 - неправильно.
PM MAIL   Вверх
almagnit
Дата 17.4.2008, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 3.4.2008

Репутация: нет
Всего: 7



опиши подробнее что именно ты реализуешь и каким кодом
PM MAIL ICQ   Вверх
barcelona
Дата 17.4.2008, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



Итак, есть текстовые поля типа:
Код

<input type='text' size='5' name='emparray_emp[14][14042008]' id='emparray_emp[14][14042008]' value='' onKeyUp=changeValues(14)>
<input type='text' size='5' name='emparray_emp[14][15042008]' id='emparray_emp[14][15042008]' value='500' onKeyUp=changeValues(14)>

Сама функция:
Код

function changeValues(id_emp) {
//Получить массив элементов emparray_emp, первый индекс которых - id_emp
var mname='emparray_emp['+id_emp+'][]';
var fields=document.mainforma[mname];
//var fields=document.forms[0].elements[mname];
alert(fields.length);
}

Зачем мне всё это надо: в этих полях вводятся суммы и мне нужно при изменении каждого поля обновлять общую сумму, которая находится в диве. Если получу массив - то по-моему проблем не будет. 

Это сообщение отредактировал(а) barcelona - 17.4.2008, 09:59
PM MAIL   Вверх
Itsys
Дата 17.4.2008, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 12
Всего: 34



Сократи Name до emparray_emp[14] и используй getElementsByName
PM MAIL WWW Skype   Вверх
barcelona
Дата 17.4.2008, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



Itsys, если бы я мог. Такие имена нужны позарез, форму без них элементарно НЕЛЬЗЯ обработать. 
PM MAIL   Вверх
almagnit
Дата 17.4.2008, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 3.4.2008

Репутация: нет
Всего: 7



Все работает

Код

<input type='text' size='5' name='a' id='a' value='0' onkeyup="document.getElementById('c').value=parseInt(document.getElementById('a').value)+parseInt(document.getElementById('b').value);">
<input type='text' size='5' name='b' id='b' value='0' onkeyup="document.getElementById('c').value=parseInt(document.getElementById('a').value)+parseInt(document.getElementById('b').value);">
<input type='text' size='5' name='c' id='c' value='0'>

PM MAIL ICQ   Вверх
Itsys
Дата 17.4.2008, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 12
Всего: 34



Ну еще есть вариант, не самый хороший - брать document.body.innerHTML и из него reg-ом выделять нужные тебе id, reg примерно такой:
Код

/(emparray_emp\[14\]\[\d+\])/g

PM MAIL WWW Skype   Вверх
barcelona
Дата 17.4.2008, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



almagnit, ВЫ НАЗВАЛИ ПОЛЯ ПО-РАЗНОМУ, К ТОМУ ЖЕ У ВАС ИМЕНА - НЕ МАССИВ. Так я и сам могу. А если Ваш пример такой:
Код

<input type='text' size='5' name='a[1][232]' id='a[1][232]' value='0'>
<input type='text' size='5' name='a[1][323]' id='a[1][232]' value='0'>
<input type='text' size='5' name='c' id='c' value='0'>

и Ваших полей a неизвестно сколько?
PM MAIL   Вверх
almagnit
Дата 17.4.2008, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 3.4.2008

Репутация: нет
Всего: 7



Извините, но расскажите практическую пользу этого способа. Что Вы хотите реализовать при 

помощи такой "схемы".
PM MAIL ICQ   Вверх
barcelona
Дата 17.4.2008, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



В моей таблице составной ключ по полям id_employee и date. Поэтому нужно, чтобы оба поля присутствовали в emparray_emp.
PM MAIL   Вверх
ksnk
Дата 17.4.2008, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Itsys, если вместо innerHTML воспользоваться DOM'ом, то получится вполне приличный результат.
Код

function changeValues(id_emp) {
//Получить массив элементов emparray_emp, первый индекс которых - id_emp
var inputs=document.getElementsByTagName('input'), res=[]
     reg=new RegExp('^emparray_emp\['+id_emp+'\]'); // возможно слеши здесь нужно удвоить ...
    for(i=0;i<inputs.length;i++){
      var j=inputs[i];
      if(j.name && j.name.match(reg))
             res.push(j);
    }
// ??
alert(res.length);
}



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
dstorm81
Дата 17.4.2008, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

Репутация: 20
Всего: 39



barcelona
Itsys, если бы я мог. Такие имена нужны позарез, форму без них элементарно НЕЛЬЗЯ обработать. 
не верю (цэ)Станиславский


в этих полях вводятся суммы и мне нужно при изменении каждого поля обновлять общую сумму, которая находится в диве. Если получу массив - то по-моему проблем не будет. 

пример верстки в студию
или картинку где написаны зависимости сумм


--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

PM   Вверх
Itsys
Дата 17.4.2008, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1338
Регистрация: 21.1.2008
Где: г. Москва

Репутация: 12
Всего: 34



ksnk, Да, так скорее всего работать будет быстрее, а слеши надо всетаки удвоить  smile

Добавлено через 1 минуту и 5 секунд
Да и впринципе массив в этом случае не обязателен - можно сразу считать сумму  smile 
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0669 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.