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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получить ключ - имени тега вида name=tag_name[key], селектор name тега 
:(
    Опции темы
СЭНСЭЙ
Дата 25.7.2015, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть такой тег input
Код

<input type=checkbox id="setting_mod" name="settings['mod']"  value='1'>


как можно при помощи чистого js или с помощью jQuery  перебрать все теги где name=settings
и в цикле получить ключи массива settings?
В данном случае один элемент с ключем 'mod'

Добавлено через 8 минут и 39 секунд
поправка
опытным путем узнал что вместо 
Код

name="settings['mod']"


нужно писать
Код

name="settings[mod]"

PM MAIL   Вверх
ksnk
Дата 25.7.2015, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



settings[mod] -это имя, текстовая строка, с точки зрения JS. В элемент массива оно преобразуется при передаче на сервер и по приходу в php.

Можно, конечно, селектором $('[name ^= settings]') пробежаться и выбрать все элементы с нужным именем, дальше выковырять все значения регуляркой прямо из атрибута. 
А можно выковырять из сериализованой строки, так может быть короче...:
Код

var $x=$('form').serialize(),
    result=[],
    reg=/\bsettings%5B(.*?)%5D=/g;
    
    while(m=reg.exec($x))
        result.push(m[1]);
    console.log(result);


Это сообщение отредактировал(а) ksnk - 25.7.2015, 15:50


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


Опытный
**


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

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



я понял убыточность моего хода мыслей

сделал так:
Код

<input type=checkbox id="setting_mod" name="settings" setting="mod"  value='1'>


Код

var settings = {};
    $('input[name=settings]').each(function(){
        if($(this).attr('type')=='checkbox'){
            eval("settings."+$(this).attr('setting')+" = 0");
            if($(this).attr('checked')!=undefined && $(this).attr('checked')!=false) 
                eval("settings."+$(this).attr('setting')+" = '"+$(this).val()+"'");
        }else{
            eval("settings."+$(this).attr('setting')+" = '"+$(this).val()+"'");
        }
    });


насколько нормальное решение?
PM MAIL   Вверх
ksnk
Дата 25.7.2015, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Вместо такого
Код

eval("settings."+$(this).attr('setting')+" = '"+$(this).val()+"'");

вполне сработает
Код

settings[$(this).attr('setting')]=$(this).val();


eval в JavaScript, конечно, не так криминален как в PHP, но лучше его не использовать, особенно так  smile

Добавлено через 1 минуту и 52 секунды
С чекбоксом - косячёк. Если первый чекбокс будет отмечен, а второй - неотмечен, значением будет 0. 
Про сериализованнуя строку я совсем не так просто упоминал  smile 


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


Опытный
**


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

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



То есть лучше не по полю name перебирать а по class или по кастомному атрибуту?
PM MAIL   Вверх
ksnk
Дата 25.7.2015, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



А какая разница - по атрибуту, по классу  или по name? Все равно получится такой-же набор элементов, а с чекбоксами все равно что-то надо будет делать. 


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


 




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


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

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