Перейти к содержанию
ArtemPitov

[Решено] JS + Option: при выборе опции должна вызываться определенная функция

Рекомендуемые сообщения

Доброго времени суток

 

Помогите решить задачу

 

есть набор опций

<select>
  <?php $i = 0 ?>
  <?php foreach ($setting_map as $setting) { ?>
    <option value="<?php echo $i; ?>"> <?php echo $setting['btn']; ?></option>
  <?php $i++; ?>
  <?php } ?>
</select>

при выборе опции должна вызываться определенная функция  fn__<?php echo i$ ?>(); 

 

пробовал через onchange не помогло, подскажите как сделать правильно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все решил, тему можно закрывать 

 

решил все переписав функцию

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так опиши, как решил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужно было сделать выпадающий список в котором при выборе опции будет срабатывать нужная функция, в моем случае смена гео позиции на карте

 

Есть список, в списках не можно, а точнее не правильно использовать события onClick=" " для каждого пункта option, для этого случая есть onСhange=""

 

Событие onchange

 

Событие возникает при изменении значения элемента формы, вроде текстового поля или списка. Например, событие onchange добавленное к тегу <textarea> срабатывает каждый раз, когда введен новый текст и поле потеряло фокус.

 

Синтаксис - onchange="скрипт"

 

Выглядит это все вот так >>

<select onchange="">
  <option value ="1"> option 1 </option>
  <option value ="2"> option 2 </option>
  <option value ="3"> option 3 </option>
  <option value ="4"> option 4 </option>
  <option value ="5"> option 5 </option>
</select>

Для того что что бы получить значение value каждый раз как будет выбрана опция в javascript есть такая конструкция  this.selectedIndex подробнее в учебнике по js https://learn.javascript.ru/form-elements

 

исходя из этого пишем скрипт который будет принимать значения value и сравнивать 

function my__js(value) { 
 if (value == нужному значению){
   ....
 }
}

теперь когда есть функция которая которая принимает знания value добавляем её вызов в наши select c передачей значения

onchange="my__js(this.selectedIndex)"

все вместе выглядит так 

<select onchange="my__js(this.selectedIndex)">
  <option value ="1"> option 1 </option>
  <option value ="2"> option 2 </option>
  <option value ="3"> option 3 </option>
  <option value ="4"> option 4 </option>
  <option value ="5"> option 5 </option>
</select>

<script type="text/javascript"> 
  function my__js(value) {
    if (value == нужному значению){
      ....
    }
  }
</script>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

лучше добавить id своему select`у и по нему вертеть элемент

<select id="mego_select_id">
  <option value="1">option 1</option>
  <option value="2">option 2</option>
  <option value="3">option 3</option>
  <option value="4">option 4</option>
  <option value="5">option 5</option>
</select>

<script type="text/javascript"><!--
$('#mego_select_id').live('change', function(){
    var selectedVal = $('#mego_select_id option:selected').val();
    if (selectedVal == 'нужному значению'){
      ...
    }
});
//--></script>
а что тут

    if (value == нужному значению){
      ...
    }
???

вдруг еще проще можно было все сделать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

проще не выйдет, так как все подтягивается с БД и  циклом перебраться

<?php $i = 0 ?>

function (index) { 
  <?php foreach ($value as $key) { ?>

    if (index == <?php echo $i; ?>>){
      ... $key['name'];
      ... $key['name'];
  }

  <?php $i++; ?>
  <?php } ?> 
}
Изменено пользователем afwollis

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.