我需要从下拉控件中获取最后选定值。但我得到错误的信息。
我需要这种控制来允许用户选择他们想要的每个选项。但是我要在获得选定值后验证他们选择的每个选项。
我在webform中部署了一个ASP.NET下拉控件。它在服务器端进行了数据绑定,产生的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 :(得分:0)
我认为你不清楚。
单击ddl时,将选择所选值。回来吧。
做这样的事情:
$("#ddl").on("change", function () {
alert($("#ddl").val());
alert($("#ddl option:selected").text());
});
对我来说效果很好。 希望这有帮助。
答案 1 :(得分: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/
答案 2 :(得分:0)
以下是我们如何选择最后选择的值(和第一个),
$("#ddl").on("change", function () {
var selValues = $("#ddl").val();
alert(selValues[0]);
alert(selValues[selValues.length - 1]);
});
但是,如果用户开始反向选择值(从底部开始),您将无法获得最后选择/点击的值,但您将始终获得下拉列表中最后一个选定的值。
我建议创建另一个函数/处理程序,它可以获取所有选定的值并逐个验证它们,而不是在每次单击/选择此多选控件时进行验证。