powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (JS) Динамическое изменение значений в элементах формы.
9 сообщений из 9, страница 1 из 1
(JS) Динамическое изменение значений в элементах формы.
    #33542833
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Возможно ламерский вопрос, но чего-то не догоняю.
Есть форма, в ней различные элементы input, textarea и т.д.
Некоторым элементам назначены дополнительные функциональные кнопочки для вызова диалогов, которые в свою очередь возвращают значения в "свой" элемент формы.

Почему не работает такой способ обращения к элементам:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<script language="JavaScript">
function test(element_name)
{
    document.foo.element_name.value = 'Hello';
}
</script>
...
<form name="foo">
<input type="text" name="text_el">
<button type="button"  onClick="test('text_el')">...</button><br>
<textarea name="textarea_el"></textarea>
<button type="button"  onClick="test('textarea_el')">...</button><br>
</form>

<input id="field_name" ...> и document.getElementById('field_name').value использовать нельзя, т.к. на странице имена с такими идшниками уже заняты для строк таблицы <tr id="field_name"> (строки тоже играют роль в представлении страницы).

Существует ли другой способ обращения к элементам формы, зная его имя?

Пока все, что пришло в голову это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<script language="JavaScript">
function test(obj)
{
    obj.value = 'Hello';
}
</script>
...
<form name="foo">
<input type="text" name="text_el">
<button type="button"  onClick="test(document.foo.text_el)">...</button><br>
<textarea name="textarea_el"></textarea>
<button type="button"  onClick="test(document.foo.textarea_el)">...</button><br>
</form>
...
Рейтинг: 0 / 0
(JS) Динамическое изменение значений в элементах формы.
    #33542857
Фотография Damnedest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть такая замечательная функция GetElementById
...
Рейтинг: 0 / 0
(JS) Динамическое изменение значений в элементах формы.
    #33542872
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Damnedestесть такая замечательная функция GetElementById Berkut<input id="field_name" ...> и document.getElementById('field_name').value использовать нельзя, т.к. на странице имена с такими идшниками уже заняты для строк таблицы <tr id="field_name"> (строки тоже играют роль в представлении страницы).
...
Рейтинг: 0 / 0
(JS) Динамическое изменение значений в элементах формы.
    #33542884
Фотография Damnedest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начнем с того что если у вас есть 2 элемента на странице с одинаковыми id то это уже ошибка для JS при обращении к одному из них. Делайте названия уникальными.
...
Рейтинг: 0 / 0
(JS) Динамическое изменение значений в элементах формы.
    #33542889
Фотография Damnedest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно обращаться к элементу через форму еще...

Код: plaintext
document.forms.NAME.ELEMENT
...
Рейтинг: 0 / 0
(JS) Динамическое изменение значений в элементах формы.
    #33542943
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно обращаться по имени к элементу. НО так как нет единой объектной модели для всех броузеров, то в одних скрипт будет работать, в других - нет.
Вариантов решений вижу несколько:
1. getElementById - на мой взгляд - идеальный вариант, раздать уникальные ID не считаю проблемой.
2. Для каждого броузера с его объектной моделью написать свой скрипт. И сделать проверку, какой броузер пользует клиент и выдавать ему скрипт под его броузер. - не самое удачное решение, потому что мало того, что несколько объектных моделей, так еще у каждого броузера свои грабли.

P.S. Так и не понял, в чем вопрос ;)))
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(JS) Динамическое изменение значений в элементах формы.
    #33542979
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DamnedestНачнем с того что если у вас есть 2 элемента на странице с одинаковыми id то это уже ошибка для JS при обращении к одному из них. Делайте названия уникальными.
Я знаю, что это ошибка для JS, поэтому собсно и создал данный топик.
Придумывать велосипед с переименованием полей сейчас нет ни времени, ни желания.
Плюс ко всему, форма генерится динамически и все имена, атрибуты тегов и т.п. также назначаются динамически для каждого элемента по его спецификации.

Damnedestможно обращаться к элементу через форму еще...

document.forms.NAME.ELEMENT


Damnedest , ничего личного, но читайте внимательнее:
DamnedestСуществует ли другой способ обращения к элементам формы, зная его имя ? Если вы имели в виду индексный доступ к элементу с помощью массива elements, то это не подходит ;)

Кроме того, вы уверены, что document.forms.NAME.ELEMENT - это действительно верно?
В контексте данного топика (и не только), document.forms.foo.element.field_name, по-моему бред.

P.S. Если я вас не так понял, то напишите конкретно пример.
...
Рейтинг: 0 / 0
(JS) Динамическое изменение значений в элементах формы.
    #33543041
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попытаюсь еще раз... :)

Форма генерится динамически. Строки примерно в таком виде (необязательно элемент textarea):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
...
<tr id="m_select_fields" >
  <td class="cell" >Список полей SELECT-запроса *</td>
  <td class="cell"><textarea id="m_select_fields" class="input" name="m_select_fields">*</textarea>
   <button type="button" name="btn_m_select_fields" 
onclick="callTableFieldsDialog('m_select_fields');" ><b>...</b></button>
...
Как видите имя 'm_select_fields' уже занято.

По нажатию кнопки вызывается диалог выбора полей из таблицы, и значение должно возвращаться в document.form_name.m_select_fields.value.

Менять имена сейчас накладно, т.к. на форме вываливается порядка 50-60 элементов в зависимости от параметров, настраиваемых пользователем.
Чтобы форма не казалась такой громоздкой часть строк по умолчанию скрыта (имитация закладок). Для этого и служит обращение к строкам таблицы с помощью getElementById, чтобы менять видимость.

Раньше обращение было проще и проблем не возникало.
Код: plaintext
1.
<button type="button" name="btn_m_select_fields" 
onclick="document.form_name.m_select_fields.value=showModalDialog(...);" ><b>...</b></button>
Но немного поменялась логика и часть функционала была перенесена в функцию callTableFieldsDialog().
...
Рейтинг: 0 / 0
(JS) Динамическое изменение значений в элементах формы.
    #33543057
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как только запостил предыдущее сообщение, понял что нужно исправить!
Код: plaintext
1.
<button onClick="document.form_name.m_select_fields.value=callTableFieldsDialog();">...</button>
Всем спасибо.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (JS) Динамическое изменение значений в элементах формы.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]