【问题标题】:How to get the value of selected item on change using jQueryUI Selectenu如何使用 jQuery UI Selectmenu 在更改时获取所选项目的值
【发布时间】:2014-12-29 01:23:26
【问题描述】:

我正在使用“选择菜单”小部件来显示表单中的状态列表:

<select name="state" id="state">
   <option value = "">Select State</option>
   <option value = "Alabama">Alabama</option>
   <option value= "Alaska">Alaska</option>
   <option value= "Arizona">Arizona</option>
   <option value= "California">California</option>
   <option value= "Colorado">Colorado</option>
   <option value= "Connecticut">Connecticut</option>
 </select>

在我的脚本中

 $( "#state" ).selectmenu();

现在,我要做的是发送所选选项值的警报。所以我有这个:

$('select').on('change', function (e) {
    var optionSelected = $("option:selected", this);
    var valueSelected = this.value;
    alert(valueSelected);
});   

问题是由于某种原因,当我使用 JQueryUI 函数selectmenu()时,这些都不起作用

当我删除那一行时,一切正常。据我了解,我需要包含 $( "#state" ).selectmenu(); 才能使用 JQuery UI 主题和功能。

谁能告诉我问题可能是什么。同样,如果我删除该 selectmenu 行,它会正常工作。

谢谢!

【问题讨论】:

    标签: javascript jquery jquery-ui jquery-ui-selectmenu


    【解决方案1】:

    jQuery UI 隐藏你原来的&lt;select&gt; 并使用动态注入的元素创建自定义widjets。所以你不再点击你提供的原始&lt;option&gt;,也不会触发change事件。

    相反,它会在所选项目发生更改时发出 selectmenuchange 事件。您可以在初始化插件时通过将处理函数传递给change 选项来收听它。

    传递给回调函数的第二个参数的item 属性指的是您选择的项目。您可以访问它的值,如下所示:

    $("#state").selectmenu({
      change: function(event, ui) {
        alert(ui.item.value);
      }
    });
    <link href="http://code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css" rel="stylesheet" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="http://code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
    <select name="state" id="state">
      <option value="">Select State</option>
      <option value="Alabama">Alabama</option>
      <option value="Alaska">Alaska</option>
      <option value="Arizona">Arizona</option>
      <option value="California">California</option>
      <option value="Colorado">Colorado</option>
      <option value="Connecticut">Connecticut</option>
    </select>

    你也可以像这样手动监听这个事件:

    $('select').on('selectmenuchange', function (e,ui) {
       alert(ui.item.value);
    }); 
    

    【讨论】:

      【解决方案2】:

      使用指定的选择回调初始化选择菜单:

      试试这个。

      $( "#state" ).selectmenu({
        select: function( event, ui ) {}
      });
      

      或者您可能正在使用旧版本的 jquery-ui 插件。请检查它是否支持selectmenu插件。

      尝试以下操作。

      <link rel="stylesheet" href="//code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css">
      <script src="//code.jquery.com/jquery-1.10.2.js"></script>
      <script src="//code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
      

      【讨论】:

      • 嘿 Ronny - 我试过了,但它仍然不能使选择脚本工作:/ 我应该把脚本放在 select: function( event, ui ) {} 大括号中吗?
      • 我更改了 JQuery-UI 链接,但它仍然不起作用。我将我的主题链接到 并将 JQuery 链接到
      • 主题通过选择菜单正确显示,但功能无法正常工作。您可以在以下位置查看问题:secretswith.me/newindex.php - 没有 JQuery UI 的选择菜单检查数据库并正确显示。有 UI 的则没有。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-27
      • 1970-01-01
      • 1970-01-01
      • 2013-02-08
      • 2012-04-12
      • 1970-01-01
      相关资源
      最近更新 更多