$(document).ready(function()
{
$('SELECT').on('change', function() { go(); });
});
function go()
{
if ($('SELECT').val() > 1)
{
//alert( $('SELECT').val() );
var prev_factor = $('SELECT').find(':selected').prev().val();
$('SELECT').val(prev_factor);
go(); //перезапуск функции
}
$("BODY").append("<BR><BR>"+$('SELECT').val()); // результат
}
<BODY>
<SELECT>
<OPTION value='1'>1</OPTION>
<OPTION value='2'>2</OPTION>
<OPTION value='3'>3</OPTION>
<OPTION value='4'>4</OPTION>
</SELECT>
</BODY>
Собственно вопрос вот в чем, как добиться того, что бы был пересчет до определенного значения, что бы после выполнения условия, обработчик события не вызывался автоматически ?
Обработчик при старте убирать нельзя, так как запуск всей этой конструкции должен быть вручную с этого самого SELECT'а
Значения лучше пересчитывать последовательно как в примере, так как конечное значение может требоваться разное, и производится его поиск. (пример просто упрощен.)
Как это работает сейчас.
Если оставляем "go(); //перезапуск функции" - то рисует либо 4 единицы, оно и понятно вызывается событие которое запущено не человеком, а обработчиком ".on". Либо 1 2 3 4 (именно в таком порядке!?!?) - что не понятно.
Если удаляем "go(); //перезапуск функции" - то выполняется один раз, что тоже не понятно почему, ведь к значению так и не пришли нужному и по идее условие должно срабатывать еще несколько раз.