Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как обратиться к input type=text если его атрибут name формируется автоматически? (https://javascript.ru/forum/events/42778-kak-obratitsya-k-input-type%3Dtext-esli-ego-atribut-name-formiruetsya-avtomaticheski.html)

Gennadiy_Ch 09.11.2013 04:53

Как обратиться к input type=text если его атрибут name формируется автоматически?
 
Здравствуйте, уважаемые знатоки.
Программирую я на JavaScript не так часто, да и вообще не часто.
Есть такая задачка. CMS OpenCart (Интернет-магазин) динамически генерирует следующий HTML-код для опредённого товара (кусок):

<div id="option-574" class="option">
                    <span class="required">*</span>
                    <b>Количество на третий квартал:</b><br />
                    <input type="text" name="option[574]" value="" />
 </div>


В общем, это текстовое поле - опция некоего товара. Нужно как-то JavaScript-ом зацепиться за это текстовое поле, чтобы выполнить некую проверку вводимых данных (в частности, что там введены цифры). Проблема в том, что опций у товара может быть несколько, а мне нужна проверка именно значения для этой опции. name у таких опций формируются автоматически и я не понимаю, за что можно зацепиться чтобы сделать такую проверку. Можно ли что-то придумать?

Gennadiy_Ch 09.11.2013 05:02

В принципе, написал и подумал: есть возможность сделать value по умолчанию определённым, например "Введите количество!" и тогда, как я понимаю, можно будет JavaScript-ом обратиться только к тем элементам, у которых value равно этому, верно? Или есть ещё какие-то варианты?

Moloch 09.11.2013 11:16

назначить input какой-нибудь класс если всем подобным инпутам нужна проверка а потом обращаться к ним при помощи getElementsByClassName

BETEPAH 09.11.2013 12:08

Цитата:

Сообщение от Gennadiy_Ch
Проблема в том, что опций у товара может быть несколько, а мне нужна проверка именно значения для этой опции

Если бы вы привели несколько опций, можно было бы посмотреть, в чем уникальность этой... Если уникальности нет, ничего же не мешает вам добавить уникальность в разметку (class, id, data-, rel, etc.)?

Gennadiy_Ch 09.11.2013 23:02

Цитата:

Сообщение от BETEPAH (Сообщение 280203)
Если бы вы привели несколько опций, можно было бы посмотреть, в чем уникальность этой... Если уникальности нет, ничего же не мешает вам добавить уникальность в разметку (class, id, data-, rel, etc.)?

CMS для одного товара может написать option-574, а для другого option-637 к примеру при том, что это одна опция товара в магазине, но в html name(ы) генерируются разные. Там можно поправить html-шаблон, надо посмотреть, но в первом приближении пока не знаю, получится или нет. А с value, наверное, не получится: в админке в графическом режиме там можно ввести значение по умолчанию, но если пользователь его изменит, то JS уже тогда не будет реагировать на этот элемент как я понимаю.

Gennadiy_Ch 09.11.2013 23:19

Код шаблона, который это формирует автоматически вот такой:

<?php if ($option['type'] == 'text') { ?>

        <div id="option-<?php echo $option['product_option_id']; ?>" class="option">

          <?php if ($option['required']) { ?>

          <span class="required">*</span>

          <?php } ?>

          <b><?php echo $option['name']; ?>:</b><br />

          <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['option_value']; ?>" />

        </div>

        <br />

        <?php } ?>

Gennadiy_Ch 09.11.2013 23:44

Таки изменил шаблон на
<input type="text" class='kvartal' name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['option_value']; ?>" />


Теперь, похоже, можно обратиться. Единственный минус у такого решения - если появятся какие-то другие опции, которые будут текстовыми - к ним это тоже будет применяться. Но вроде сейчас не планируется такого. В крайнем случае - будет textarea:)


Часовой пояс GMT +3, время: 01:14.