Обработчик у 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, время: 15:00. |