使用选择的 jquery 插件获取每个选择的值

Posted

技术标签:

【中文标题】使用选择的 jquery 插件获取每个选择的值【英文标题】:Get each selected value using chosen jquery plugin 【发布时间】:2013-03-02 10:40:30 【问题描述】:

我正在使用选择多项选择 我想要做的是,如果用户选择任何我想要该值的选项,然后我将根据该值执行一些功能。

在没有多选的情况下,我可以通过使用 foll 来获得选定的值。代码

$(".selectId").chosen().change(function()
     selectedValue = $(this).find("option:selected").val();
);

但在多选中,我再次获得第一个选定的值 n 任何人都可以通过在多个选择元素中找到当前选定的值来帮助我吗??

【问题讨论】:

【参考方案1】:

Chosen documentation 提到了用于获取最近更改的变量的参数。

无论何时进行选择,Chosen 都会触发标准 DOM 事件 (它还发送一个选择或取消选择的参数,告诉你 哪个选项被改变了)。

所以,如果您只想选择或取消选择最近的选项:

$(".selectId").chosen().change(function(e, params)
 // params.selected and params.deselected will now contain the values of the
 // or deselected elements.
);

否则,如果您希望整个数组都可以使用,则可以使用:

$(".selectId").chosen().change(function(e, params)
 values = $(".selectId").chosen().val();
 //values is an array containing all the results.
);

【讨论】:

【参考方案2】:

简答:

您只需这样做:var myValues = $('#my-select').chosen().val();

完整示例:

如果你有这样的多选:

<select id="my-select" class="chzn-select" multiple data-placeholder="Choose one or more values...">
  <option value="value1">option1</option>
  <option value="value2">option2</option>
  <option value="value3">option3</option>
</select>

您可以获取数组中的选定值以执行以下操作:

// first initialize the Chosen select
$('#my-select').chosen();

// then, declare how you handle the change event
$('#my-select').chosen().change(function()
    var myValues = $('#my-select').chosen().val();

    // then do stuff with the array
    ...
);

【讨论】:

【参考方案3】:

您的代码正在获取正确的选定值..但由于它的倍数您需要使用循环..或使用map 获取选定值并将其推送到数组中..

试试这个

 $(".selectId").chosen().change(function()
    var  selectedValue = $.map( $(this).find("option:selected").val(), function(n)
              return this.value;
       );
    console.log(selectedValue );  //this will print array in console.
    alert(seletedValue.join(',')); //this will alert all values ,comma seperated
);

更新

如果您获得逗号分隔值,请使用split()

 var values=  $(".selectId").val();
 $.each(values.split(',').function(i,v)
     alert(v); //will alert each value
     //do your stuff
 

【讨论】:

感谢您的即时帮助。但是它会抛出这个错误:Uncaught TypeError: Cannot use 'in' operator to search '1' in 23 Cannot use 'in' operator to search for '1' in 23 奇怪...听起来错误是从添加的代码中得到的..你有没有尝试评论这个..并尝试一下..看看你是否再次收到错误..跨度> 我想为每个选择做一些功能。我可以使用 $(".selectId").val(); 获取所有选定的项目但我想要一个一个的值,当用户选择项目时,我想在每个选择的某个 div 元素中显示当前选择的值 $(".selectId").val(); 这是给你一个数组吗.. 如果是的话你可以循环遍历数组并使用每个数组.. :) 不,它给了我逗号分隔的值【参考方案4】:

试试这个

 $('.selectId:selected').each(function(i, selected) 

var value = $(selected).val();
var text = $(selected).text();

);

【讨论】:

嘿,谢谢。但我想为每个选择做一些功能。我可以使用 $(".selectId").val(); 获取所有选定的项目;但是我想要一个一个的值,并且当用户选择项目时,我想在每个选择的某个 div 元素中显示当前选择的值 这里的值意味着你只会得到一个值。你观察到它在每个循环中吗 嘿,看看场景:- 我有三个项目:item1,item2,item3,。现在,如果我选择 item3,那么我将在某个 div 元素中显示 item3。之后我选择第 1 项。当我选择第 1 项时,此值将附加到该 div。即现在我的 div 有 item3 和 item1。我希望在相同的选择序列中。【参考方案5】:

Chosen documentation 提到了用于获取最近更改的变量的参数。

$(".CSS Selector").chosen().change(function(e, parameters) 
  // params.selected and params.deselected will now contain the values of the
  // or deselected elements.
);

【讨论】:

【参考方案6】:

这就是我让它工作的方式。在我的 html 中,我有这个

<select data-placeholder="Choose a Country..." class="form-control chosen-select" multiple tabindex="4">
    <option value="USA">USA</option>
    <option value="UK">UK</option>
    <option value="CHINA">CHINA</option>
</select>

然后是javascript

// apply chosen-js to the DOM, and store it in a variable.
var chosen = $(".chosen-select").chosen(
   no_results_text: "Oops, nothing found!"
); 

// inside the change event, we get the value by calling chosen.val()
chosen.change(function() 
   console.log('selected tags are', chosen.val());
);

【讨论】:

以上是关于使用选择的 jquery 插件获取每个选择的值的主要内容,如果未能解决你的问题,请参考以下文章

如何获取附加了 Jquery Multifield 插件的多个下拉列表和文件上传的值

JQuery使用默认选择= y时从选择列表中获取用户选择的值

使用jquery在循环内获取选择标签的值

jquery怎么获取attribute的值

在 PHP 中,如何使用 select2(Jquery 插件)显示选定的值

当每个下拉列表动态创建ID时,jquery选择选项数据和值[关闭]