如何从jquery中的有序选择框创建逗号分隔的数组

时间:2012-01-04 19:22:09

标签: php jquery html

如何使用选择框从生成的列表中创建项目数组,以便对项目进行排序并用逗号分隔它们。

示例...

我有一个由数据库中的id生成的项目列表,其中包含与项目关联的选择框。

<?php
$sql = mysql_query("SELECT id, title FROM songs WHERE id='$id' ORDER BY title ASC");

  while($row = mysql_fetch_array($sql)){
    $id = $row['id'];
    $title = $row['title'];
    $song_chart .= '

      <div id="$id">

        <select>
          <option val="1">1</option>
          <option val="2">2</option>
          <option val="3">3</option>
          <option val="4">4</option>
          //etc...
        </select>

        <a href="page.php?id='.$id.'">'.$title.'</a>

      </div>';
  }
$song_chart .= '<button></button>';
echo $song_chart;
?>

我有多个要为其选择值的项目。

如果值大于0,我想从项目中获取“id”,选择与选择相关联,并按选择(而不是id)对所有项目进行排序。

然后我想发布信息并将其放入逗号分隔的数组中以插入我的数据库。

我目前没有任何实际尝试的代码,我真的不知道如何解决这个问题。任何帮助将不胜感激。提前谢谢!

修改

上面的输出看起来像这样......

<div id="1">
  <select>
    <option val="1">1</option>
    <option val="2">2</option>
    <option val="3">3</option>
    <option val="4">4</option>
    //etc...
  </select>

  <a href="page.php?id=1">one</a>

</div>
<div id="2">
  <select>
    <option val="1">1</option>
    <option val="2">2</option>
    <option val="3">3</option>
    <option val="4">4</option>
    //etc...
  </select>

  <a href="page.php?id=2">two</a>

</div>
<div id="3">
  <select>
    <option val="1">1</option>
    <option val="2">2</option>
    <option val="3">3</option>
    <option val="4">4</option>
    //etc...
  </select>

  <a href="page.php?id=3">three</a>

</div>
<div id="4">
  <select>
    <option val="1">1</option>
    <option val="2">2</option>
    <option val="3">3</option>
    <option val="4">4</option>
    //etc...
  </select>

  <a href="page.php?id=4">four</a>

</div>

<button></button>

然后在提交时,我想重新组织生成的id与所选值的匹配,然后将其放在数组/字符串中,如此...

var arr = '2, 3, 1, 4';

并将它们发布到数据库中。

2 个答案:

答案 0 :(得分:1)

好的,在这种情况下,更容易在OPTION

的值中编码数据
<div id="3">
  <select>
    <option val="1">1</option>
    <option val="2">2</option>
    <option val="3">3</option>
    <option val="4">4</option>
    //etc...
  </select>

  <a href="page.php?id=3">three</a>

</div>

变为:

<div id="3">
  <select>
    <option val="3,1">1</option>
    <option val="3,2">2</option>
    <option val="3,3">3</option>
    <option val="3,4">4</option>
    //etc...
  </select>

  <a href="page.php?id=3">three</a>

</div>

将ID嵌入数据中。逗号分开。

答案 1 :(得分:0)

我在Diodeus的帮助下找到了解决方案(谢谢)。

$(document).ready(function(){
  $('.selection').value(""); // clears the values
  $('selection option').click(function(){ // when option is clicked

    s=new Array(); // create array
    $("select option:selected").each(function(){
     // check to see which values are selected
      var v = $(this).val();

      if(v != ""){ // if the value is not empty.
        s.push(v); 
      }

    });

  });
  $("#submitList").click(function(){
    if(s != ""){
      alert(s);//or submit the list
    }
  });
});

我还在html输出中更改了一些内容。

<div id="3">
  <select class='selection'>
    <option></option>
    <option val="1,id">1</option>
    <option val="2,id">2</option>
    <option val="3,id">3</option>
    <option val="4,id">4</option>                      
    //etc...                    
  </select>
  <a href="page.php?id=3">three</a>
</div>