Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите с JS (или jquery кому как удобнее) по формам

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Обход всех элементов
alxfro
Отправлено: 14 Июня, 2012 - 13:52:29
Post Id



Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Имеется.
<form id="xxx">
<input type="text" size="20" name="name" value="" id="myid1" value="1">
<input type="text" size="20" name="name" value="" id="myid1" value="2">
</form>

Требуется.
Обойти на JS все элементы формы и установить значения всех input type="text" на другие.

Условия.
Заранее неизвестно, какое количество инпутов.

Вопрос?
Как их все обойти в цикле? Можно пример какой-нибудь простенький.
 
 Top
EuGen Администратор
Отправлено: 14 Июня, 2012 - 14:04:11
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




alxfro пишет:
<form id="xxx">
<input type="text" size="20" name="name" value="" id="myid1" value="1">
<input type="text" size="20" name="name" value="" id="myid1" value="2">
</form>

С одинаковыми id ничего хорошего не выйдет. Если, к примеру, у Вас есть такое:
CODE (html):
скопировать код в буфер обмена
  1. <form id="xxx">
  2. <input type="text" size="20" name="group_0" id="myid0" value="1">
  3. <input type="text" size="20" name="group_0" id="myid1" value="2">
  4. <input type="text" size="20" name="group_0" id="myid2" value="3">
  5. </form>

- то подойдет вариант:
CODE (javascript):
скопировать код в буфер обмена
  1. var rgElems=document.getElementsByName("group_0");
  2. for(var i=0; i<rgElems.length; i++)
  3. {
  4.    rgElems[i].value="text";
  5. }


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
alxfro
Отправлено: 14 Июня, 2012 - 14:09:14
Post Id



Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




EuGen пишет:
С одинаковыми id ничего хорошего не выйдет.


Да, опечатался, id разные. Name у полей тоже разные. К сожалению, ваш пример не помог мне перебрать все элементы формы с ID xxx.
 
 Top
EuGen Администратор
Отправлено: 14 Июня, 2012 - 14:23:36
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Тогда
CODE (html):
скопировать код в буфер обмена
  1. <form id="xxx">
  2.     <input type="text" size="20" name="group_0" id="myid0" value="1">
  3.     <input type="text" size="20" name="group_1" id="myid1" value="2">
  4.     <input type="text" size="20" name="group_2" id="myid2" value="3">
  5. </form>
  6. <form id="yyy">
  7.     <input type="text" size="20" name="group_7" id="myid7" value="7">
  8.     <input type="text" size="20" name="group_8" id="myid8" value="8">
  9.     <input type="text" size="20" name="group_9" id="myid9" value="9">
  10. </form>

и
CODE (javascript):
скопировать код в буфер обмена
  1. var rgElems=document.getElementById("xxx").getElementsByTagName("input");
  2. for(var i=0; i<rgElems.length; i++)
  3. {
  4.    rgElems[i].value = "text";
  5. }


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
alxfro
Отправлено: 14 Июня, 2012 - 14:33:01
Post Id



Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




На первый взгляд все должно работать.
Но почему то отработка JS у меня прерывается на строчке

EuGen пишет:
var rgElems=document.getElementById("xxx").getElementsByTagName("input");


она находится в блоке

CODE (htmlphp):
скопировать код в буфер обмена
  1. $(document).ready()
  2. { }


Форма имеет id xxx....

т.е. вроде как срабатывать все должно после загрузки документа, jquery тоже подключен.

Вот на всякий случай кусок кода.

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  3. <html>
  4. <head>
  5.   <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.  
  7.   <script type="text/javascript" src="http://yandex.st/jquery/1.7.2/jquery.min.js"></script>
  8.  
  9. <script type="text/javascript">
  10.  
  11. $(document).ready()
  12. {
  13. alert('debug');
  14. var rgElems=document.getElementById("xxx").getElementsByTagName("input");
  15. alert('debug');
  16. for(var i=0; i<rgElems.length; i++)
  17. {
  18.   rgElems[i].value = "text";
  19. }
  20.  
  21. }
  22.  
  23.  </script>
  24. </head>
  25. <body>
  26. <h1>Local</h1>
  27. <form id="xxx">
  28.         <input type="text" size="20" name="name" value="" id="myid1" >
  29.         <input type="text" size="20" name="name2" value=""  id="myid2" >
  30.         <input type="text" size="20" name="name3" value=""  id="myid3" >
  31.         <input type="text" size="20" name="name4" value=""  id="myid4" >
  32. </form>
  33. </body>
  34. </html>
  35.  

(Отредактировано автором: 14 Июня, 2012 - 14:47:12)

 
 Top
EuGen Администратор
Отправлено: 14 Июня, 2012 - 14:36:46
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Консоль смотрели? Отладка (FireBug к примеру) что сообщает? Не найден элемент? Это во всех браузерах так?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
alxfro
Отправлено: 14 Июня, 2012 - 14:42:43
Post Id



Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




EuGen пишет:
Консоль смотрели? Отладка (FireBug к примеру) что сообщает? Не найден элемент? Это во всех браузерах так?


Да и вот результат как я и думал.

SCRIPT5007: Не удалось получить значение свойства "getElementsByTagName": значением объекта является NULL или он не определен
local.html, строка 39 символ 1

(Отредактировано автором: 14 Июня, 2012 - 14:46:50)

 
 Top
IllusionMH
Отправлено: 14 Июня, 2012 - 15:11:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




alxfro, интересный код. Как минимум нужно передавать функцию в метод ready, а не писать блок после
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).ready(function()
  2. {
  3.     alert("debug");
  4.     var rgElems = document.getElementById("xxx").getElementsByTagName("input");
  5.     alert('debug');
  6.     for (var i = 0; i < rgElems.length; i++)
  7.     {
  8.         rgElems[i].value = "text";
  9.     }
  10.  
  11. });


а если использовать jQ(ну не ради одного .ready лишние кб грузить?) то можно сократить еще больше
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).ready(function() {
  2.     var rgElems = $("#xxx").find("input").each(function() {
  3.         this.value = "text";
  4.     });
  5. });


если элементы потом не используются, можно еще и присвоене убрать ;)

(Отредактировано автором: 14 Июня, 2012 - 15:14:10)

 
 Top
EuGen Администратор
Отправлено: 14 Июня, 2012 - 15:17:03
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Да я и не заметил, что это отдельный блок а не внутри ready. Тогда все более-менее ясно, причины Вам указали.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
armancho7777777 Супермодератор
Отправлено: 14 Июня, 2012 - 16:00:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




IllusionMH, точее будет так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(document).ready(function() {
  3.  
  4.     var rgElems = $("#xxx").find("input:text").each(...
  5.  
  6. });
  7.  

Зачем все инпуты собирать? Это же, почти, все элементы формы.
 
 Top
Viper
Отправлено: 14 Июня, 2012 - 16:07:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




armancho7777777 пишет:
Зачем все инпуты собирать? Это же, почти, все элементы формы.
не все а только типа text.

ИМХО find("input:text") не слишком хорошо скажется на производительности.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
armancho7777777 Супермодератор
Отправлено: 14 Июня, 2012 - 16:10:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Viper пишет:
не все а только типа text.

Ну и где указан этот тип в коде?
Данная строка
CODE (javascript):
скопировать код в буфер обмена
  1. $("#xxx").find("input").each(function() {

обходит все инпуты.
Если, только проверять:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. if(this.type == 'text')
  3.  

но зачем, если :text уже является фильтром.

(Отредактировано автором: 14 Июня, 2012 - 16:14:11)

 
 Top
alxfro
Отправлено: 14 Июня, 2012 - 16:11:08
Post Id



Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Всем спасибо, работает как надо. Радость

Кому интересно, получился небольшой плагин (если можно так назвать) для сохранения текстовых инпутов формы.

Можете качнуть http://zalil[dot]ru/33443548 обновлено - поддержка IE 9+

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

(Отредактировано автором: 14 Июня, 2012 - 16:25:47)

 
 Top
armancho7777777 Супермодератор
Отправлено: 14 Июня, 2012 - 16:12:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




.

(Отредактировано автором: 14 Июня, 2012 - 16:13:55)

 
 Top
IllusionMH
Отправлено: 14 Июня, 2012 - 17:15:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




armancho7777777, действительно пропустил что нужны только текстовые Огорчение
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB