2013-11-27 3 views
1

Мне нужно получить последнее выбранное значение из выпадающего меню. Но я получаю неправильную информацию.Как получить последний selectedindex

Мне нужен такой контроль, чтобы пользователи могли выбирать каждый желаемый вариант. Но я должен проверить каждый вариант, который они выбирают после получения выбранного значения.

Я развернул выпадающий элемент ASP.NET в веб-форме. Это databinded в стороне сервера, и в результате HMTL является следующее:

<select name="ddl" id="ddl" multiple="multiple" data-native-menu="false"> 
    <option value=""></option> 
    <option value="1">1800346</option> 
    <option value="2">1800353</option> 
    <option value="3">1800358</option> 
    <option value="4">1800509</option> 
    <option value="5">1800514</option> 
</select> 

И это мой JQuery код: Он предупреждает SelectedIndex и выбранный текст.

$("#ddl").on("change", function() { 
    alert($("#ddl")[0].selectedIndex); 
    alert($("#ddl option:selected").text()); 
}); 

С alert($("#ddl")[0].selectedIndex) Получаю первый выбранный индекс. Например, если вы нажмете первый флажок, вы получите «1» в первый раз. После этого, если вы нажмете на третий флажок, вы снова получите «1» (вместо «3»). Потому что выбран первый вариант.

Я также пробовал с alert($("#ddl option:selected").text()), но я все получаю.

Есть ли способ получить только последнее выбранное значение? Я могу получить только первый выбранный индекс.

Вы можете найти свой код и здесь: http://jsfiddle.net/bDvkQ/342/

Любая помощь будет очень приветствуется,

С уважением,

+0

Вы имеете в виду это? http://jsfiddle.net/Palestinian/bDvkQ/343/ выбранный вариант? – Omar

ответ

0

Проверить для этого кода

$("#ddl").on("change", function() { 
var lastText = ""; 
var last = 0; 
$("#ddl option:selected").each(function() { 
    lastText = this.text; 
    last = this.value; 
}); 
alert(lastText); 
alert(last); 
}); 

и вы можете найти по этой ссылке, чтобы http://jsfiddle.net/bDvkQ/344/

+0

это работает для меня со следующим обновлением: $ ("# ddl").на ("изменение", функция() { \t \t вар lastText = ""; \t \t вар последняя = 0; \t \t если ($ ("# DDL") [0] .selectedIndex> 0) { \t . \t \t $ ("# DDL вариант: выбран") каждый (функция() { \t \t \t \t lastText = this.text; \t \t \t \t последняя = this.value; \t \t \t}); \t \t \t alert (lastText); \t \t \t предупреждение (последний); \t \t} \t}); Большое спасибо! –

0

Я думаю, что это не было ясно для вас.

Когда вы нажмете на ddl, он выберет выбранное значение. Просто верни его.

ли что-то вроде этого:

$("#ddl").on("change", function() { 
alert($("#ddl").val()); 
alert($("#ddl option:selected").text()); 
}); 

Это хорошо работает для меня. Надеюсь, это помогло.

+0

Я не могу использовать этот скрипт, потому что он показывает все валы, а не последние. Спасибо, в любом случае. –

0

Вот как мы можем выбрать последнее выбранное значение (и первый),

 $("#ddl").on("change", function() { 
     var selValues = $("#ddl").val(); 
     alert(selValues[0]); 
     alert(selValues[selValues.length - 1]); 
    }); 

Однако, если пользователь начинает выбирать значения в обратном направлении (снизу), вы не получите последнее выбранное/кликнутое значение, но вы всегда получите выбранное значение, которое будет последним в раскрывающемся списке.

Я бы предложил создать еще одну функцию/обработчик, которая получает все выбранные значения и проверяет их по очереди, а не выполняет валидацию при каждом щелчке/выборе этого элемента управления несколькими выборами.

+0

Я не могу использовать этот скрипт, потому что он показывает все vals, а не последний. Спасибо в любом случае –

+0

Я думаю, что это не так. Я протестировал этот скрипт на IE9 и IE10. Какой браузер вы используете? На самом деле, val() вернет все выбранные элементы, но затем мы выберем последний элемент из массива. –

Смежные вопросы