【问题标题】:How do I get the selected element by name and then get the selected value from a dropdown using jQuery?如何按名称获取选定元素,然后使用 jQuery 从下拉列表中获取选定值?
【发布时间】:2012-08-10 20:55:38
【问题描述】:

我能够按名称找到我的选择元素,但我无法找到与之关联的选定值。

下面是我的代码:

<select  name="a[b]" onchange='mySelectHandler("a[b]")'>
     <option value='Choice 1'>Choice 1</option>
     <option value='Choice 2'>Choice 2</option>

</select>

然后,在我正在使用的处理程序中:

function mySelectHandler(name){
     var mySelect = $('select[name=' + name)
     // try to get selected value
     // alert ("selected " + mySelect.val())
     console.log("object "+ mySelect.toSource());
  }

我打印到日志的结果是:

object ({length:0, prevObject:{0:({}), context:({}), length:1}, context:({}), selector:"select[name=a[b] "})

关于如何做到这一点的任何想法?

【问题讨论】:

    标签: jquery select


    【解决方案1】:

    您的选择器有点偏离,它缺少尾随 ]

    var mySelect = $('select[name=' + name + ']')
    

    您可能还需要在名称周围加上引号,如下所示:

    var mySelect = $('select[name="' + name + '"]')
    

    【讨论】:

      【解决方案2】:

      试试这个:

      $('select[name="' + name + '"] option:selected').val();
      

      这将获得您菜单的选定值。

      【讨论】:

      • 怎样才能得到所有的名字??
      【解决方案3】:

      从 HTML 标记中删除 onchange 事件并将其绑定到您的文档就绪事件中

      <select  name="a[b]" >
           <option value='Choice 1'>Choice 1</option>
           <option value='Choice 2'>Choice 2</option>
      </select>​
      

      和脚本

      $(function(){    
          $("select[name='a[b]']").change(function(){
             alert($(this).val());        
          }); 
      });
      

      工作样本:http://jsfiddle.net/gLaR8/3/

      【讨论】:

        【解决方案4】:

        而不是

        mySelect.toSource()
        

        使用

        mySelect.val()
        

        【讨论】:

          【解决方案5】:

          MrOBrian 的回答说明了为什么您当前的代码不起作用,缺少尾随 ] 和引号,但这里有一种更简单的方法来使它起作用:

          onchange='mySelectHandler(this)'
          

          然后:

          function mySelectHandler(el){
               var mySelect = $(el)
               // get selected value
               alert ("selected " + mySelect.val())
            }
          

          或者更好的是,完全删除内联事件处理程序并将事件处理程序与 jQuery 绑定:

          $('select[name="a[b]"]').change(function() {
              var mySelect = $(this);
              alert("selected " mySelect.val());
          });
          

          最后一个需要在 document.ready 处理程序中或出现在 select 元素之后的脚本块中。如果您想为其他选择运行相同的功能,只需将选择器更改为适用于所有的选择器,例如,all 选择将是 $('select'),或者所有具有特定类的将是 $('select.someClass') .

          【讨论】:

            【解决方案6】:

            尝试通过元素名称从选择元素中获取值

            $("select[name=elementnamehere]").val();
            

            【讨论】:

              【解决方案7】:

              或者你可以简单地做

              $('select[name=a[b]] option:selected').val()
              

              【讨论】:

                【解决方案8】:

                要在此处添加答案,请确保 select[name... 之间没有空格

                错误:

                'select [name=' + name + ']'
                       ^
                

                右:

                'select[name=' + name + ']'
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2022-01-21
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多