Нашли это! Эта часть ответственна:
var option = $(this).attr('id').split('option_');
$('#'+option[1]).val(String($cur_val));
setTimeout(function(){$('#'+option[1]).val(String($cur_val))}, 1000);
Я не знаю, что вы пытались сделать здесь, но в основном переменная option становится массивом ["", "years"], и на следующем шаге вы устанавливаете $ ("#" + option [ 1]) значение переменной $ cur_val, которая найдена во входных данных #option_years.
Тааак, чтобы обернуть это. Чтобы избавиться от проблемы «мой выбор не меняет своего значения», в этом случае просто избавьтесь от этих строк или, по крайней мере, дайте мне знать, что вы хотели там сделать:)
РЕДАКТИРОВАТЬ: Вот пример, который работает для меня: http://pastebin.com/sFRT3GJa (проверено на FF и Chrome). Как видите, в качестве источника я использую jQuery 1.6.1, jQuery UI 1.8.16 и jqPlot 1.0.0b2_r792. Кроме этого, я переместил функцию обратного вызова $ .load_x и назвал ее handleJSON . Затем я передал данные JSON, которые вы вставили в свой вопрос, чтобы смоделировать успешный ответ функции $ .load_x.