Изменение параметра name у всех input.
Всем привет.
И так, стоит задача, поменять у всех элементов input, в элементе с id #edit параметр name. В принципе как сделать что бы брать только input понятно, и ясно. просто взять #edit input но как менять параметр name??? $("#edit li input").each(function(i){ names = $(this).attr(name) alert(names); names.replace(/[^a-z]/g, '') $(this).attr(name, names+parseInt(i+1)); }); <ul id = 'edit'> <li> <input type = 'text' name = 'name'> </li> <li> <input type = 'text' name = 'name'> </li> </ul> В результате должный выйти инпуты с именами name1 и name2 |
xTODx,
4 строка что делает? по вашему и parseInt он необходим? |
4 строка убирает цифры с name.
parseInt не нужно?? тут проблемка в том, что alert undifiend показывает. |
по идее вообще понял, что нужно
$("#edit")each(function(i){ но как тогда до input достучаться ? |
Цитата:
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <script src="http://code.jquery.com/jquery-latest.js"></script> </head> <body> <ul id = 'edit'> <li> <input type = 'text' name = 'name'> </li> <li> <input type = 'text' name = 'name'> </li> </ul> <script> $("#edit li input").each(function(i){ var names = $(this).attr('name'); $(this).attr('name', names+(++i)); alert($(this).attr('name')) }); </script> </body> </html> |
Цитата:
Ну да, я написал name='name'. но это набросал что бы сюда написать. А если так было бы <ul id = 'edit'> <li> <input type = 'text' name = 'name3'> </li> <li> <input type = 'text' name = 'name2'> </li> <li> <input type = 'text' name = 'name5'> </li> </ul> |
$("#edit li input").each(function(i){ var names = $(this).attr('name'); names = names.replace(/[^a-z]/g, '') $(this).attr('name', names+(++i)); alert($(this).attr('name')) }); Спасибо, вот так всё работает)) а names = то не заметил, что не поставил( |
и да, спасибо вам огромное)) писал раньше в теме про sortable, там вы тоже помогли, собственно туда это и делал я...)) нумеровал...)
|
Цитата:
|
как видите, так вот решил это всё сделать. с нумеровкой в сортировке, с интервалом в пару секунд будет обновлять номера))
И в одно поле буду выводить отдельно в скрытую форму n, что бы там показало последний номер. Потом в цикле php, буду $_POST проверять в цикле, как раз то количество раз, которое указано в скрытой форме n) разумно? |
xTODx, а нафига все эти пляски? Нафиг менять name?
Я почему-то уверен что этого делать не нужно, и все решается проще. |
Цитата:
А зачем каждые n секунд менять номера? И зачем в $_POST что-то проверять в цикле? Если не в курсе, то в $_POST можно передать поля ввиде массива, это такая фишка php-шная(не только) :) <input name="name[]"> <input name="name[]"> var_dump($_POST); |
та понятно что каждые n секунд не буду обновлять номера, только когда действие произошло какое то, временно поставил просто.
По поводу name="name[]" это спасибо. правда всё-равно в цикле foreach нужно работать будет, буду отправлять в базу данных, с каждого))) Только скорее всего будет name="1['name']" и т.д.)) потому что нужно по будет брать массив $_POST[1], 2 и т.д. и каждая ячейка будет ещё иметь параметры name и т.д. p.s: функцию нумерации вызываю при наведении на кнопку, которая при нажатии передаёт данные в php |
Так че в итоге, избавился от ручной нумерации name'ов?
|
нет, всё на много важнее. у меня дрегбатлом и сортаблом, перетаскиваю нужные элементы в поле, они сортируются, в них есть некие параметры, которые либо каждому блоку изначально свои заданы, а некоторые меняются юзером, потом выбраные сохраняются)
|
function sorta(){ $("#sortable li").each(function(i){ numb = (++i); $(this).find("input").each(function(){ var names = $(this).attr('name'); names = names.replace(/[^a-z]/g, ''); names = names.replace(']', ''); names = names.replace('[', ''); $(this).attr('name', numb+'['+names+']'); }); }); } Вот конечный код) нумерует все input в #sortable li одним номером, в следующем таком #sortable li, следующим номером |
То есть на странице порядок самих инпутов остается неизменным. "Сортируются" просто их имена, верно?
|
ну тот который мы поставили первым, и будет первым, переставим его на второе место, будет вторым)
|
xTODx, ок. А зачем менять их имена? Они же и так в массиве будут в том порядке, в котором расположены на странице?
|
в каждом элементе сортабл, есть поля с одним и тем же name. как я с $_POST вызову $_POST['name']??? )
|
Цитата:
В итоге у тебя в $_POST['name'] будет массив! |
я понял, именно этим я и пользуюсь только вот не name[] а 1['name']
|
Цитата:
|
ну обьясню так, из первого блока, должен составиться запрос, потом со второго, и так далее...
соответственно это $_POST['1'] а в нём уже будут поля лежать name и т.д. |
А я бы сделал так:
<form action="" method="post"> <fieldset> <input type="text" name="names[]"> <input type="text" name="names2[]"> </fieldset> <fieldset> <input type="text" name="names[]"> <input type="text" name="names2[]"> </fieldset> </form> Да, инпуты будут разнесены по разным массивам, но зато не надо всякую лажу на js писать. |
Часовой пояс GMT +3, время: 08:56. |