【问题标题】:How to get Chosen Multiselect selected values under the For Loop如何在 For 循环下获取选择的多选选定值
【发布时间】:2016-08-12 13:19:46
【问题描述】:

这是我的视图文件代码

<?php for($i=0; $i<4; $i++)  { ?>
 <div class="box22">
      <div class="mcm">
           <input type="text" placeholder="Myself" id="coworkers" name="coworkers[]" />
           <span class="bar"></span>
      </div>

      <div class="select2">
       <select id="category_<?php echo $i; ?>" name="category[]" class="chosen-select ref-sel1" multiple >
           <?php
           foreach($genre as $gen){
                echo '<option value='.$gen->genre_id.'>'.$gen->genre_name.'</option>';
           } 
           ?>
       </select>
      </div>
 </div>
<?php } ?> 

我的脚本:当我从选项中选择一个或多个时,它不会进入脚本。如何在循环下获取多个值

    $(document).ready(function()
    {
        $('form#shortfilm').submit(function(e) 
        {
            e.preventDefault();
            var form = $(this);
            var foo = [];
            $('#category :selected').each(function(i, selected){
              foo[i] = $(selected).text();
            });
        });
    });

【问题讨论】:

  • 我只尝试过,但没有响应
  • 为什么要为所有选择标签保持选择框的名称相同。这个同名可以覆盖。
  • 看到你在 php 代码中运行了 4 次循环
  • 好的,我知道错在哪里,检查我的答案

标签: php jquery html jquery-chosen jquery-multiselect


【解决方案1】:

将文本更改为 val()

 $('option:selected').each(function(i, selected){
              foo.push($(selected).val());
            });

或:

var foo = [];
$('.box22').each(function(x,v){
var temp =[]
     $(v).find('option:selected').each(function(i, selected){
        temp.push($(selected).val());
     });
     foo.push(temp)
});

see demo for the second option here

【讨论】:

  • 现在我检查一下.. 所选值由单个第一个选项显示。但不工作推元素
  • 单一第一选项是什么意思?
  • @madalinivascu 感谢您的回复,关于 jsfiddle 的演示不起作用,我正在寻找类似 @​​987654322@ 的任何想法如何实现
【解决方案2】:

请运行此示例代码。这可能对你有帮助

<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
</head>
<body>
<form id="shortfilm" name="data">
<?php $genre=array(1=>'AAAAAAAAAAAAAA',2=>'BBBBBBBBBBBBBBB',3=>'CCCCCCCCC',4=>'DDDDDDDDDDDDDD',5=>'EEEEEEEEEEEEEEE');
for($i=0; $i<4; $i++)  { ?>
 <div class="box22">
      <div class="mcm">
           <input type="text" placeholder="Myself" id="coworkers" name="coworkers<?php echo$i?>[]" />
           <span class="bar"></span>
      </div>

      <div class="select2">
       <select class="category" name="category<?php echo$i?>[]" class="chosen-select ref-sel1" multiple >
           <?php
           foreach($genre as $key => $gen){
                echo '<option value='.$key.'>'.$gen.'</option>';
           } 
           ?>
       </select>
      </div>
 </div>
<?php } ?> 
<input type="submit" value="submit" />
</form>
<script>
$(document).ready(function()
{
    $('form#shortfilm').submit(function(e) 
    {
        e.preventDefault();
        var form = $(this);
        var foo = [];
        $('.category :selected').each(function(i, selected){
          foo[i] = $(selected).text();
        });
        console.log(foo);
    });
});
</script>
</body>
</html>

【讨论】:

    【解决方案3】:

    在多选列表上使用 .val() 函数将返回一个包含所选值的数组:

    var selectedValues = $('#category').val();

    在你的html中&lt;select id="category" multiple="multiple"&gt;

    也将 $gen->genre_id 的值放在一个变量中,就像这样

    foreach($genre as $gen){
    $genId = $gen->genre_id;
    $genName = $gen->genre_name;
                echo '<option value='.$genId.'>'.$genName.'</option>';
           } 
    

    同样&lt;select id="category"在forloop中会有很多相同id的select元素,改成category[$i]或者使用class

    【讨论】:

    • @jana 将此添加到代码中并告诉我它是否正常工作
    • 现在执行此操作并检查
    • 你实现了这个@jana 吗?
    • 编辑了您必须停止循环选择具有相同 id 的元素的答案,改用类或将循环编号附加到 id
    • 你能投票吗? :) 因为我的回答在某种程度上很有用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 2021-07-26
    • 2020-10-07
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多