Javascript 提交表单后保留所选选项

Javascript 提交表单后保留所选选项,javascript,php,Javascript,Php,早上好,我有一个问题,那就是:在提交表格后,我无法选择几个选项,我希望有人能帮助我 <select name="utilizadores[]" id="utilizadores" multiple="multiple" class="selectpicker" data-live-search="true" data-actions-box="true" title="Utilizadores"> <?php while ($reg_sql=mysqli_fetch_arra

早上好,我有一个问题,那就是:在提交表格后,我无法选择几个选项,我希望有人能帮助我

<select name="utilizadores[]" id="utilizadores" multiple="multiple" class="selectpicker" data-live-search="true" data-actions-box="true" title="Utilizadores">
<?php  while ($reg_sql=mysqli_fetch_array($res_sql)){?>

<option value="<?php echo $reg_sql['ID_USER']; ?>"><?php echo $reg_sql['NOMEUSER']; ?></option>
<?php } ?>  
</select>
<script type="text/javascript">
  document.getElementById('utilizadores').value = "<?php echo $_POST['utilizadores[]'];?>";
</script> 

document.getElementById('utilizadores')。value=“”;

这是我的代码,在选择框中有各种选项。如果您的数据库结果还包含选定的行,则可以更有效地执行此操作,但在循环时,只需将
selected=“selected”
属性添加到
标记中即可

假设此范围中存在
$\u POST
数组,则可以使用PHP中的
in\u array
函数来确定是否已选择该选项()

基于三元的操作如下所示:

在数组中($reg\u sql['ID\u USER'],$\u POST['utilizadores'])?'selected=“selected”:''

这表示“如果ID_用户在post数组中,则打印所选属性,否则打印空白字符串”

总而言之:

<select name="utilizadores[]" id="utilizadores" multiple="multiple" class="selectpicker" data-live-search="true" data-actions-box="true" title="Utilizadores">
    <?php  while ($reg_sql=mysqli_fetch_array($res_sql)){?>
        <option value="<?php echo $reg_sql['ID_USER']; ?>" <?= in_array($reg_sql['ID_USER'],$_POST['utilizadores']) ? 'selected="selected"' : '' $?>>
            <?php echo $reg_sql['NOMEUSER']; ?>
        </option>
<?php } ?>  
</select>


您必须检查$\u POST['utilizadores']或$\u GET['utilizadores']这取决于您的请求类型。我会在这里用$来解释我的答案

您的选择是多个的,您可以使用in_数组函数检查db记录的结果是否在$_POST['utilizadores'数组中

<select name="utilizadores[]" id="utilizadores" multiple="multiple" class="selectpicker" data-live-search="true" data-actions-box="true" title="Utilizadores">

     <?php  while ($reg_sql=mysqli_fetch_array($res_sql)){?>

     **<option value="<?php echo $reg_sql['ID_USER']; ?>"
        <?php 
            if(isset($_POST['utilizadores'])){
              if(in_array($reg_sql['ID_USER'], $_POST['utilizadores'])){
                 echo 'selected';
              }else{
                echo '';
              }
           }
         ?>
     >**<?php echo 
          $reg_sql['NOMEUSER']; ?></option>
<?php } ?>  
</select>


** 这是一个如何做到这一点的示例。如果是,则添加“选定”字符串,如果否,则保留为空。您也可以写入selected=“selected”。您可以执行相同的操作来设置为禁用或只读

<select name="utilizadores[]" id="utilizadores" multiple="multiple" class="selectpicker" data-live-search="true" data-actions-box="true" title="Utilizadores">
<?php  while ($reg_sql=mysqli_fetch_array($res_sql)){?>
<?php $selected = isset($reg_sql["mi_variable"]) ? "selected" : ""; ?>
    <option value="<?php echo $reg_sql['ID_USER'];?>" <?php echo $selected; ?> >
        <?php echo $reg_sql['NOMEUSER']; ?>
    </option>
<?php } ?>  
</select>
<script type="text/javascript">
      document.getElementById('utilizadores').value = "<?php echo $_POST['utilizadores[]'];?>";
</script> 

document.getElementById('utilizadores')。value=“”;

当您的值与POST数据匹配时,只需添加一个“selected”属性……我是如何做到的?你能帮我吗?写一些代码来检查打印选项的值,以及它是否与文章中选择的选项匹配。只是一个if语句,真的。谢谢@AndréTavares