无法使用 php、jquery 和 html5 从添加/删除列表中检索选项值


Cannot retrieve option value from a add/remove list using php, jquery and html5

我在传递/显示所选列表中的值时遇到问题。我使用 Jquery 创建了一个添加/删除列表,我尝试显示使用 foreach 和 for 循环传递的值,但它仍然不起作用。我试图获取的值是名为selectto的列表中的$existing_mID[$j]。仅供参考,我是Javascript的新手,因此我对下面的Jquery代码知之甚少,因为我采用了不同的参考资料并提出了它。

请让我知道我应该怎么做才能获得价值观,我非常感谢您的帮助。

下面是我用来实现添加/删除函数的函数。

$(document).ready(function() {

$('#btn-add').click(function(){
    $('#select-from option:selected').each( function() {
            $('#select-to').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>");
            $('#select-to option').attr('selected',true);
        $(this).remove();
    });
});
$('#btn-remove').click(function(){
    $('#select-to option:selected').each( function() {
        $('#select-from').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>");
        $('#select-to option[value=' +$(this).val()+ ']').attr('selected',true);
        $(this).remove();
    });
});
});

这是我用来设置选项属性的形式:

<form action = "" method = "POST"> 
<select name="selectfrom[]" id="select-from" multiple="" size="10"> 
<?php $j=0; foreach($existing_mTitle as $item) { ;?>
<option value="<?php $existing_mID[$j];?>" > 
<?php echo "$existing_mID[$j] & $item";$j++;?> 
</option> <?php }?> 
</select> 
<a href="JavaScript:void(0);" id="btn-add">Add &raquo;</a> 
<a href="JavaScript:void(0);" id="btn-remove">&laquo; Remove</a>
<select name="selectto[]" id="select-to" multiple="" size="10"> </select> 
<input type="submit" name="addArticle" value="Add" /> </form>

以下是我尝试调用变量的方式。它们都不起作用。所以我在想Jquery代码是否有任何问题。

<?php
if(isset($_POST['selectto']))
{
    $selected = $_POST['selectto'];
    echo "something in selected<br />";
    for ($i=0;$i<count($selected);$i++)
    echo "selected #1 : $selected[$i]";
    foreach ($selected as $item)
    echo "selected: item: $item";
    foreach ($selected as $idx => $item)
     {
     echo "selected: {$idx}: {$item}<br>'n";
 }
}
?>

下面是我正在处理的每一行代码。我认为我的选择列表或我的 javascript 中的选项值属性有问题。但我不知道在哪里寻找错误。我很抱歉发布了很多代码,但没有提供太多信息。

请查看它并确定 selectto 选项值未正确显示的原因

$messagesql = "SELECT mID, mTITLE from test.message";
$mQuery = mysqli_query($dbc, $messagesql) or die (mysqli_error($dbc));
$num_Mrows=mysqli_num_rows($mQuery);
echo "Number of message rows: $num_Mrows<br />";
while ($row = mysqli_fetch_array($mQuery,MYSQLI_BOTH))
{
    $existing_mTitle[] = $row [ 'mTITLE' ];
    $existing_mID[] = $row ['mID'];
}
if(isset($_POST['selectto']))
{
    $selectedValues = '';
   foreach($_POST['selectto'] as $index => $value) {
       $selectedValues .= $value.', ';
   }
   $selectedValues = rtrim($selectedValues , ''); // remove last comma and whitespace
   echo 'The selected values are: '. $selectedValues ;  
   }

else
echo "nothing in selected<br />";
$articleSubmit = $_POST['addArticle'];
if(isset($articleSubmit))
{
    $titleSubmit = $_POST['articleTitle'];
    $summarySubmit = $_POST['articleSummary'];
    $abstractSubmit = $_POST['articleAbstract'];
    $regionSubmit = $_POST['articleRegion'];
    $populationSubmit = $_POST['articlePopulation'];
    $docTypeSubmit = $_POST['articleDocType'];
    $docStatusSubmit = $_POST['articleDocStatus'];
    $docYearSubmit = $_POST['articleDocYear'];
    $keywordSubmit = $_POST['articleKeyword'];
    if (null ==($titleSubmit) or null ==($summarySubmit) or null ==($abstractSubmit) or null ==($regionSubmit) or null ==($populationSubmit)
    or null ==($docTypeSubmit) or null ==($docStatusSubmit) or null ==($docYearSubmit) or null ==($keywordSubmit) /*or !isset($selected)*/)
    {
        echo "you need to fill in all the fields in order to add a new article.";
    }
    else
    {
        echo "article submitted";
        $aSQL = "INSERT INTO test.article 
        (name, abstract, summary, region, population, docType, docStatus, docYear, keyword) values
        ('$titleSubmit', '$abstractSubmit', '$summarySubmit', '$regionSubmit', '$populationSubmit',
        '$docTypeSubmit', '$docStatusSubmit', '$docYearSubmit', '$keywordSubmit')";
        echo $aSQL;
        $aQuery = mysqli_query($dbc,$aSQL) or die (mysqli_error($dbc));
        $aidSQL = "SELECT aID from article where name = '$titleSubmit' and abstract = '$abstractSubmit' and summary = '$summarySubmit'";
        $aidQuery = mysqli_query($dbc, $aidSQL) or die (mysqli_error($dbc));
        while ($row = mysqli_fetch_array($aidQuery, MYSQLI_BOTH))
        {
            $assocAID = $row;
        }
        echo "<br />assocAID: $assocAID[0]<br />";
        $selected = $_POST['selectto'];
        foreach($selected as $item)
        {
            $amSQL = "INSERT INTO a_m (assocAID, assocMID) values ($assocAID[0], $item)";
            $amQuery = mysqli_query($dbc,$amSQL) or die (mysqli_error($dbc));
        }
    }
}
?>
<script type="text/javascript" src="jquery-latest.min.js"></script>
<script type="text/javascript" src="test5-1-1.js"></script>
<link rel="stylesheet" type="text/css" href="test5-1-1.css"/>
<head>
  <meta charset="utf-8">
  <title>Add New Content</title>
  <link rel="stylesheet" href="jquery-ui.css">
  <script src="jquery-1.10.2.js"></script>
  <script src="jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css"/>
  <link rel="stylesheet" href="cyjm4.css"/>
  <script>
  $(function() {
    $( "#tabs" ).tabs();
  });
  </script>
</head>
<body>
<div id="tabs">
  <ul>
    <li><a href="#tabs-1">Article</a></li>
    <li><a href="#tabs-2">Message</a></li>
    <li><a href="#tabs-3">Platform</a></li>
  </ul>
  <div id="tabs-1">
  <form action="" method="POST">
    <p>Title:</p> <textarea name="articleTitle" cols="40" rows="3"></textarea>
    <p>Summary:</p> <textarea name="articleSummary" cols="40" rows="8"></textarea>
    <p>Abstract:</p> <textarea name="articleAbstract" cols="80" rows="6"></textarea>
    <p>Keyword:</p> <textarea name="articleKeyword" cols="40" rows="2"></textarea>
    <div id="left">
    <p>Regions:</p>
    <select name="articleRegion">
        <option value="US">United States</option>
        <option value="UK">United Kingdom</option>
        <option value="EUROPE">Europe</option>
    </select>
    <p>Populations:</p>
    <select name="articlePopulation">
        <option value="General">General</option>
        <option value="Elderly">Elderly</option>
        <option value="Women">Women</option>
    </select>
    <p>Document Type:</p>
    <select name="articleDocType">
        <option value="Research">Research</option>
        <option value="Report">Report</option>
    </select>
    <p>Document Status:</p>
    <select name="articleDocStatus">
        <option value="Published">Published</option>
        <option value="Unpublished">Unpublished</option>
    </select>
    <p>Documnet Year:</p>
    <select name="articleDocYear">
        <option value="2004">2004</option>
        <option value="2006">2006</option>
        <option value="2007">2007</option>
        <option value="2011">2011</option>
        <option value="2012">2012</option>
    </select>
    <br /><br />
    </div>
    <fieldset>
        <select name="selectfrom[]" id="select-from" multiple="" size="10">
        <?php $j=0; foreach($existing_mTitle as $item) { ;?>
            <option value=" <?php $existing_mID[$j]; ?> " ><?php echo "$existing_mID[$j] & $item";$j++;?></option>
        <?php }?>
        </select>
        <button type="button" id="btn-add">Add</button>
        <button type="button" id="btn-remove">Remove</button>
        <select name="selectto[]" id="select-to" multiple="" size="10">
        </select>
    </fieldset>
    <input type="submit" name="addArticle" value="Add" />
</form>
 </div>
  <div id="tabs-2">
    <p>Title:</p> <textarea name="articleTilte" cols="40" rows="3"></textarea>
    <p>Summary:</p> <textarea name="articleSummary" cols="40" rows="8"></textarea>
  </div>
  <div id="tabs-3">
    <p></p>    
  </div>
</div>

</body>
</html>

我以你为例简化了

代码。假设您有以下代码

<form method="POST">
    <select name="selectfrom[]" id="select-from" multiple="" size="10"> 
    <?php
        for($i = 0; $i < 10;$i++) {
            echo '<option value="'.$i.'">Item '.$i.'</option>';
        }
    ?>
    </select> 
    <button id="btn-add" type="button>Add &raquo;</a> 
    <button id="btn-remove" type="button">&laquo; Remove</a>
    <select name="selectto[]" id="select-to" multiple="" size="10"> </select> 
    <input type="submit" name="addArticle" value="Add" /> </form>
</form>
<?php
   print_r($_POST);
   /*
     Array
     (
         [selectto] => Array
         (
             [0] => 2
             [1] => 3
          )
         [addArticle] => Add
     )
   */
   //So this means that :
   $selectedValues = '';
   foreach($_POST['selectto'] as $index => $value) {
       $selectedValues .= $value.', ';
   }
   $selectedValues = rtrim($selectedValues , ', '); // remove last comma and whitespace
   echo 'The selected values are: '. $selectedValues ;    
?>