0

我正在使用以下函数在两个选择字段之间移动数据:

<script language="javascript"> 
function move(tbFrom, tbTo) 
{
 var arrFrom = new Array(); var arrTo = new Array(); 
 var arrLU = new Array();
 var i;
 for (i = 0; i < tbTo.options.length; i++) 
 {
  arrLU[tbTo.options[i].text] = tbTo.options[i].value;
  arrTo[i] = tbTo.options[i].text;
 }
 var fLength = 0;
 var tLength = arrTo.length;
 for(i = 0; i < tbFrom.options.length; i++) 
 {
  arrLU[tbFrom.options[i].text] = tbFrom.options[i].value;
  if (tbFrom.options[i].selected && tbFrom.options[i].value != "") 
  {
   arrTo[tLength] = tbFrom.options[i].text;
   tLength++;
  }
  else 
  {
   arrFrom[fLength] = tbFrom.options[i].text;
   fLength++;
  }
}

tbFrom.length = 0;
tbTo.length = 0;
var ii;

for(ii = 0; ii < arrFrom.length; ii++) 
{
  var no = new Option();
  no.value = arrLU[arrFrom[ii]];
  no.text = arrFrom[ii];
  tbFrom[ii] = no;
}

for(ii = 0; ii < arrTo.length; ii++) 
{
 var no = new Option();
 no.value = arrLU[arrTo[ii]];
 no.text = arrTo[ii];
 tbTo[ii] = no;
}
}

</script>

主页面

<?php
mysql_select_db($database_UARData, $UARData);
$query_DistributionGroups = "SELECT distgrp.distgrpnme FROM distgrp";
$DistributionGroups = mysql_query($query_DistributionGroups, $UARData) or die(mysql_error());
$row_DistributionGroups = mysql_fetch_assoc($DistributionGroups);
$totalRows_DistributionGroups = mysql_num_rows($DistributionGroups);

?>

          <select name="newusrdgavail" size="10" id="newusrdgavail" style="width:300px">
            <?php
do {  
?>
            <option value="<?php echo $row_DistributionGroups['distgrpnme']?>"><?php echo $row_DistributionGroups['distgrpnme']?></option>
            <?php
} while ($row_DistributionGroups = mysql_fetch_assoc($DistributionGroups));
  $rows = mysql_num_rows($DistributionGroups);
  if($rows > 0) {
      mysql_data_seek($DistributionGroups, 0);
      $row_DistributionGroups = mysql_fetch_assoc($DistributionGroups);
  }
?>
          </select>
        </label></td>
        <td align="center" bgcolor="#CCCCCC"><p>
          <input type="button" name="newusrdgadd" id="newusrdgadd" value="Add" onclick="move(newusrdgavail,newusrdgreq)"/>
        </p>
          <p>
            <input type="button" name="newusrdgremove" id="newusrdgremove" value="Remove" onclick="move(newusrdgreq,newusrdgavail)"/>
          </p></td>
        <td bgcolor="#CCCCCC"><label>
          <select name="newusrdgreq" size="10" multiple="multiple" id="newusrdgreq" style="width:300px">
          </select>
        </label></td>

移动功能运行良好,移动的值显示在表单的正确字段中。问题是当我去 php 提交时:

$newusrdgreq = $_POST['newusrdgreq'];
$email_message .= "Required Email Distribution Groups: ".$newusrdgreq."\n";

我收到通知:未定义索引。只在这个领域。其他一切都提交就好了。我知道我可以使用 isset 函数来避免空值或空值。但是我认为最大的问题是“newusrdgreq”字段没有将添加和删除的值正确附加到该字段,但我不明白为什么。任何帮助,将不胜感激。

4

1 回答 1

0

这里的问题是 SELECT 只有一个值,即使您设置它multiple- 用户必须手动选择所有值,所以基本上选择框中的所有项目 - 不会发送回服务器

要解决此问题,您可以有 2 个选项:

  1. 如果您将从选择框中复制数据,则创建隐藏字段
  2. 提交之前 - 选择 SELECT 中的所有值
于 2013-10-19T07:01:09.057 回答