如何使用其索引值从下拉列表中获取所选文本?

时间:2014-05-10 20:57:42

标签: jquery

如何使用索引值从下拉列表中获取所选文本?这是我三个多小时以来的工作。我已经尝试过这段代码的各种版本。

 $("#saveBtn").click(function () {
         var checked = [];
         var checkedindex = [];
         var theDate = [];
         var inputname = $("input[name='searchString']");
         $("input[name='selectedCourses']").each(function (i) {
             if (this.checked) {
                 checked.push(parseInt($(this).val()));
                 checkedindex.push(parseInt(i));

                 var thedate = $('inputname option:eq(i)').prop('selected', true);

                 alert(checkedindex + thedate.toString());
             }
         });



     });

这是我使用它的方式吗?

   $('inputname option:eq(i)').prop('selected', true);

请帮我这个。感谢。

编辑:

HTML:

    <select id="searchString" name="searchString">
    <option value="Day" selected="selected">Day</option>
    <option value="Monday">Monday</option>
    <option value="Tuesday">Tuesday</option>
    <option value="Wednesday">Wednesday</option>
    <option value="Thursday">Thursday</option>
    <option value="Friday">Friday</option>
    </select>

我在页面上有许多相同的下拉列表,其ID和名称相同。

4 个答案:

答案 0 :(得分:1)

多个元素的相同ID是一个问题,如果您有多个ID,浏览器在获取第一个ID时会停止查找。

然而,我在您的代码中看到问题是:

var inputname = $("input[name='searchString']");

在上面的选择器中,您的元素为input,前缀为select,因此必须为:

var inputname = $("select[name='searchString']");

在这里:

var thedate = $('inputname option:eq(i)').prop('selected', true);
//--------------^^^^^^^^^^---this is the selector variable and you have used 
//---------------------------as string and in ':eq(i)' i as a string 

改为:

var thedate = inputname.find('option:eq('+ i +')').prop('selected', true);

如何获取所选文字

获取文字:

var thedate = inputname.find('option:eq('+ i +')').prop('selected', true).text();

获取值:

var thedate = inputname.find('option:eq('+ i +')').prop('selected', true).val();

你不必这样做:

thedate.toString()

因为.text()会给你一个字符串。

答案 1 :(得分:0)

如果您想根据索引选择项目,那么您应该将选择器与该索引连接:

$("select option:eq("+ i +")").prop('selected', true);

但是你想用#saveBtn点击处理程序来实现什么?

到目前为止您的代码有几个问题:

  1. 您的网页上不应该有多个具有相同ID的元素。

  2. [name =&#39; selectedCourses&#39;]没有输入,因此您需要使用$("select[name='selectedCourses']")

  3. parseInt($(this).val())。你为什么要尝试从字符串值解析int?
  4. var thedate = $('inputname option:eq(i)').prop('selected', true); alert(checkedindex + thedate.toString());   thedate变量是jQuery对象,因此调用.toString()始终会返回[object Object]
  5. 如果您尝试获取网页上所有选择的值,则应使用.val()功能(它也适用于复选框),如下所示:

    $("select[name='selectedCourses']").val()
    

答案 2 :(得分:0)

使用这个。

 $("select").on("change",function(){
    alert($(this).val());
 });
你可以在这里试试。

http://jsfiddle.net/q5dYN/

答案 3 :(得分:0)

使用eq()函数然后传递您的变量,以使文本使用text()尝试:

var thedate = $('#searchString option').eq(i);

thedate.prop('selected', true);

alert(thedate.text());