Обработчик у 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> |
Цитата:
https://learn.javascript.ru/event-bu...сплытия |
Возможно.событие с submit останавливает, но проверить работает ли его событие не могу пока.Так правильно будет?
<option onclick="event.stopPropagation();" onchange="..." value='...' >Выбрать другой...</option> |
Цитата:
во-первых, пытаемся остановить не click, а change во-вторых, непонятно, что такое change на option https://www.w3.org/TR/DOM-Level-2-Ev...ngs-htmlevents Цитата:
|
ureech,
bes, Надо в одном обработчике на change, привязанном к select, делать ветвление в зависимости от выбранного option |
Цитата:
<option onclick="event.stopPropagation();$(this).ajax_function()" value="">Выбрать другой...</option> Но пока не написал аякс запрос для выбора города и поэтому не знаю сработает или нет. Цитата:
|
<!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> И делайте в кейсах что хотите |
Dilettante_Pro,
Спасибо, понятно. Буду попробовать.:) |
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> |
Хитро.:)
|
Часовой пояс GMT +3, время: 20:45. |