Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.03.2016, 19:31
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 765

Обработчик у Select
Здравствуйте.Подскажите как можно осуществить следующие.
Есть ф-ция на php, возвращает селект с опшион.На селекте висит onchange.
<select name="region" onchange="$(\'form#obform\').submit();">
<option value='...'>test</option>
</select>

Нужно добавить ещё один опшион со своим onchange, что бы на него не влиял submit в селекте.
<select name="region" onchange="$(\'form#obform\').submit();">
<option value='...'>test</option>
<option onchange="..." value='...'>test2</option>
</select>
Ответить с цитированием
  #2 (permalink)  
Старый 16.03.2016, 20:21
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от ureech
Нужно добавить ещё один опшион со своим onchange, что бы на него не влиял submit в селекте.
оно?
https://learn.javascript.ru/event-bu...сплытия
Ответить с цитированием
  #3 (permalink)  
Старый 16.03.2016, 21:29
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 765

Возможно.событие с submit останавливает, но проверить работает ли его событие не могу пока.Так правильно будет?
<option onclick="event.stopPropagation();" onchange="..." value='...' >Выбрать другой...</option>
Ответить с цитированием
  #4 (permalink)  
Старый 16.03.2016, 23:58
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от ureech
Возможно.событие с submit останавливает, но проверить работает ли его событие не могу пока.Так правильно будет?
<option onclick="event.stopPropagation();" onchange="..." value='...' >Выбрать другой...</option>
почти
во-первых, пытаемся остановить не click, а change
во-вторых, непонятно, что такое change на option
https://www.w3.org/TR/DOM-Level-2-Ev...ngs-htmlevents
Цитата:
change
The change event occurs when a control loses the input focus and its value has been modified since gaining focus. This event is valid for INPUT, SELECT, and TEXTAREA. element.
Bubbles: Yes
Cancelable: No
Context Info: None
Ответить с цитированием
  #5 (permalink)  
Старый 17.03.2016, 12:38
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

ureech,
bes,
Надо в одном обработчике на change, привязанном к select, делать ветвление в зависимости от выбранного option
Ответить с цитированием
  #6 (permalink)  
Старый 17.03.2016, 14:36
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 765

Сообщение от bes
во-вторых, непонятно, что такое change на option
Пока ничего, но по задумке скорее всего будет всё таки onclick и на него ф-ция, как то так
<option onclick="event.stopPropagation();$(this).ajax_function()" value="">Выбрать другой...</option>

Но пока не написал аякс запрос для выбора города и поэтому не знаю сработает или нет.
Сообщение от Dilettante_Pro
Надо в одном обработчике на change, привязанном к select, делать ветвление в зависимости от выбранного option
Можно пример?
Ответить с цитированием
  #7 (permalink)  
Старый 17.03.2016, 16:22
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

<!DOCTYPE HTML>
<html>
<head>
<title></title>
<script>
    function tstsel(opt) {
        switch (opt.value) {
            case "1":
                alert("Выбран первый");
                break;
            case "2":
                alert("Выбран второй");
                break;
            default:
                alert("Выберите что-нибудь конкретное");
        }
    }
</script>
</head>
<body>
   <select name="test" onchange="tstsel(this);">
      <option>---</option> 
      <option value="1">test1</option>
      <option value="2">test2</option>
   </select>
</body>
</html>

И делайте в кейсах что хотите
Ответить с цитированием
  #8 (permalink)  
Старый 17.03.2016, 16:32
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 765

Dilettante_Pro,
Спасибо, понятно. Буду попробовать.
Ответить с цитированием
  #9 (permalink)  
Старый 17.03.2016, 17:17
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

ureech,
Более хитрый вариант - с группировкой option по видам действий
Можно выполнять определенные действия с разными value в качестве параметра
<!DOCTYPE HTML>
<html>
<head>
<title></title>
<script>
    function tstsel(opt) {
        for (var i= 0; i < opt.options.length; i++) { 
         if (opt.options[i].selected) var _opt = opt.options[i];
        }
        switch (_opt.dataset.class) {
            case "simplex":
                alert("Выбран класс simplex " + opt.value);
                break;
            case "complex":
                alert("Выбран класс complex " + opt.value);
                break;
            default:
                alert("Выберите что-нибудь конкретное");
        }
    }
</script>
</head>
<body>
   <select name="test" onchange="tstsel(this);">
      <option data-class="empty">---</option> 
      <option data-class="simplex" value="1">test1</option>
      <option data-class="complex" value="2">test2</option>
      <option data-class="simplex" value="3">test3</option>
      <option data-class="complex" value="4">test4</option>
   </select>
</body>
</html>
Ответить с цитированием
  #10 (permalink)  
Старый 17.03.2016, 21:42
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 765

Хитро.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с элементами select и input razorg1991 Элементы интерфейса 10 06.01.2016 01:09
Проверка нескольких select на одинаковые значения emulexx Общие вопросы Javascript 6 07.04.2015 15:19
Метод для конвертирования едениц px, em, %, pt. jegit Элементы интерфейса 0 07.03.2013 16:15
Как заставить выполняться обработчик после всех имеющихся обработчиков данного элемен Анатолий Саратовцев jQuery 2 08.10.2012 18:49
Проблема с динамическим формированием select elepsion jQuery 1 31.10.2010 14:31