2014-11-27 6 views
0
function LoadData(id) { 
var employeeId = $.trim($("#employeeId").val()); 
var employeeType = $.trim($("#employeeType").val()); 

var obj = ""; 
var CityId = $.trim($("#ddlCity").val()); 
obj = new ViewModel1(employeeId, employeeType, 0, $.trim($("#DeptName").val()), "", "", $.trim($("#SectionName").val()), CityId); 
var postedData = JSON.stringify(obj); 

Loader(); 
$.ajax({ 
    //........... 
    //........... 
}) 

}Найти ранее выбранное значение выпадающего списка на событие изменения

У меня есть функции выше, и я хочу, чтобы получить предварительно выбранное значение в элементе #ddlCity. Вышеупомянутая функция вызывается из строки ниже.

@Html.DropDownGroupListFor(m => m.CityId, Model.GroupedTypeOptions, new { name = "ddlCity", id = "ddlCityName", @onchange = "javascript:LoadData(this.value)" }) 

вар CityId = $ .trim ($ ("# ddlCity") Вал().); дает мне CityId моего нового выбора в выпадающем списке.

Итак, как я могу получить CityId ранее выбранного значения?

+2

Просто хранить последнее значение в переменном – adeneo

+1

возможном дубликате [Получение значения выбора (раскрывающийся список) до изменения] (http://stackoverflow.com/questions/4076770/getting-value-of-select -dropdown-before-change) –

+0

Имейте 'onchange', чтобы сохранить новое значение как атрибут' data-'в том же элементе. Затем вы можете забрать его в последующих изменениях. –

ответ

2

Мог бы также опубликовать свой комментарий как ответ (тоже :).

Имейте onchange. Сохраните новое значение как атрибут/хранилище data- на элементе select. Затем вы можете забрать его в последующих изменениях.

например. http://jsfiddle.net/TrueBlueAussie/bLc12tu0/

$(".selector").change(function() { 
    // Get the previous value (if any) 
    var prev = $(this).data("prev"); 
    // Store the new value for next time 
    $(this).data("prev",$(this).val()); 

    $('#output').html(prev); 
}).each(function(){ 
    // Also save any initial dropdown value as the previous value (for each select) 
    $(this).data("prev", $(this).val()); 
}); 
+1

Возможно, также необходимо установить значение 'data-prev', когда страница будет загружена сначала' $ (". Selector"). Data ("prev", $ (this) .val()); ' –

+0

Нет, если значение был установлен привязкой к модели (например, с помощью 'DropDownListFor()'), и вы даже можете увидеть ее в своем собственном скрипте (начальное значение равно '1', но если вы выберете другой элемент, предыдущее значение не отобразит' 1' –

+0

@Stephen Muecke: Спасибо за предложение. Я обновил прозрачное исправление, которое будет поддерживать несколько элементов управления. –

2

Я бы сохранил его в атрибуте в теге select.

Скажите это ваш HTML

`<select data-last-selection> 
... 
</select>` 

Теперь добавьте что-то вроде этого в вашем JavaScript

$("[data-last-selection]").change(function() { 
    var previousData = $(this).data("lastSelection"); 
    $(this).data("lastSelection",$(this).val()); 

    // Handle the previous data now stored in previousData variable 
}); 
Смежные вопросы