Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > replace c выражением


Автор: bars80080 30.1.2013, 12:27
требуется в html-ке поменять индекс у имён полей

к примеру, это
Код

            <div class="cell field"><input type="text" name="xbegl[0][2][1]" value="Внуково" /></div>
            <div class="cell label">код</div>
            <div class="cell field_mini">
                <input type="text" name="xbegc[0][2][1]" value="VKO" />
            </div>

требуется превратить в
Код

            <div class="cell field"><input type="text" name="xbegl[0][2][0]" value="Внуково" /></div>
            <div class="cell label">код</div>
            <div class="cell field_mini">
                <input type="text" name="xbegc[0][2][0]" value="VKO" />
            </div>


то есть 1 на 0, но только конкретный индекс

что-то вроде:

Код

        $(block).html($(block).html().replace(/name="(\s)[(\w)][(\w)][(\w)]"/, 'name="$1[$2][$3]['+ new_value +']"'));


но как видите, регулярки у меня далеко хромают

Автор: ksnk 30.1.2013, 12:37
Откуда берется html? 
-- живет себе на сервере. Тогда непонятно с чего используется javascript? Проще один раз поменять исходники скриптом (php?).
-- неожиданно прилетает на страницу и его нужно в real-time режиме менять?

Автор: bars80080 30.1.2013, 12:40
чего html делать на сервере? он живёт на странице в браузере пользователя. есть кнопочки "добавить блок", "убрать блок" и без лишних запросов к серверу мы добавляем эти блоки, которые дозаполняем.
для это же как раз и предназначен javascript?

Автор: ksnk 30.1.2013, 13:21
Код

var block=$('#block');
block.html(block.html().replace(/name="(\w+)\[(\w+)\]\[(\w+)\]\[(\w+)\]"/g, 'name="$1[$2][$3]['+ '0' +']"'));

?

Автор: bars80080 30.1.2013, 14:36
именно так

спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)