Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.11.2013, 04:53
Аватар для Gennadiy_Ch
Интересующийся
Отправить личное сообщение для Gennadiy_Ch Посмотреть профиль Найти все сообщения от Gennadiy_Ch
 
Регистрация: 29.09.2011
Сообщений: 29

Как обратиться к 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 в 04:56.
Ответить с цитированием
  #2 (permalink)  
Старый 09.11.2013, 05:02
Аватар для Gennadiy_Ch
Интересующийся
Отправить личное сообщение для Gennadiy_Ch Посмотреть профиль Найти все сообщения от Gennadiy_Ch
 
Регистрация: 29.09.2011
Сообщений: 29

В принципе, написал и подумал: есть возможность сделать value по умолчанию определённым, например "Введите количество!" и тогда, как я понимаю, можно будет JavaScript-ом обратиться только к тем элементам, у которых value равно этому, верно? Или есть ещё какие-то варианты?
Ответить с цитированием
  #3 (permalink)  
Старый 09.11.2013, 11:16
Аспирант
Отправить личное сообщение для Moloch Посмотреть профиль Найти все сообщения от Moloch
 
Регистрация: 29.10.2013
Сообщений: 94

назначить input какой-нибудь класс если всем подобным инпутам нужна проверка а потом обращаться к ним при помощи getElementsByClassName
Ответить с цитированием
  #4 (permalink)  
Старый 09.11.2013, 12:08
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от Gennadiy_Ch
Проблема в том, что опций у товара может быть несколько, а мне нужна проверка именно значения для этой опции
Если бы вы привели несколько опций, можно было бы посмотреть, в чем уникальность этой... Если уникальности нет, ничего же не мешает вам добавить уникальность в разметку (class, id, data-, rel, etc.)?
Ответить с цитированием
  #5 (permalink)  
Старый 09.11.2013, 23:02
Аватар для Gennadiy_Ch
Интересующийся
Отправить личное сообщение для Gennadiy_Ch Посмотреть профиль Найти все сообщения от Gennadiy_Ch
 
Регистрация: 29.09.2011
Сообщений: 29

Сообщение от BETEPAH Посмотреть сообщение
Если бы вы привели несколько опций, можно было бы посмотреть, в чем уникальность этой... Если уникальности нет, ничего же не мешает вам добавить уникальность в разметку (class, id, data-, rel, etc.)?
CMS для одного товара может написать option-574, а для другого option-637 к примеру при том, что это одна опция товара в магазине, но в html name(ы) генерируются разные. Там можно поправить html-шаблон, надо посмотреть, но в первом приближении пока не знаю, получится или нет. А с value, наверное, не получится: в админке в графическом режиме там можно ввести значение по умолчанию, но если пользователь его изменит, то JS уже тогда не будет реагировать на этот элемент как я понимаю.
Ответить с цитированием
  #6 (permalink)  
Старый 09.11.2013, 23:19
Аватар для Gennadiy_Ch
Интересующийся
Отправить личное сообщение для Gennadiy_Ch Посмотреть профиль Найти все сообщения от Gennadiy_Ch
 
Регистрация: 29.09.2011
Сообщений: 29

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

<?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 } ?>
Ответить с цитированием
  #7 (permalink)  
Старый 09.11.2013, 23:44
Аватар для Gennadiy_Ch
Интересующийся
Отправить личное сообщение для Gennadiy_Ch Посмотреть профиль Найти все сообщения от Gennadiy_Ch
 
Регистрация: 29.09.2011
Сообщений: 29

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


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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обратиться к свойству объекта по имени если оно хранится в переменной xaknik Общие вопросы Javascript 2 25.04.2012 23:12
Как правильно очистить maxlength в input? Маэстро Events/DOM/Window 10 22.06.2011 18:14
О наследовании событий, или как корректно его отменить. JCShen Events/DOM/Window 8 09.02.2010 00:00
как обратиться к childNode по его id в div-е, через id родителя kichSman Events/DOM/Window 5 28.10.2009 02:16
Разным элементам input - разное форматирование. Как? eclipse (X)HTML/CSS 1 25.10.2007 13:55