成功提交后清除选择选项

时间:2013-10-22 06:35:04

标签: php

<div class="select_list">
    <div class="labels">Category:</div>
    <?php
        if(!isset($_POST['postbtn)){
            echo "<script>$(document).ready(function(){
                $('.category').val(0);
            })
            </script>";
        }
        echo "<select name='category' id='catg_list' class='list_catg'>
            <option value='0'";
                if(isset($_POST['category']) && $_POST['category']=='0'){
                    echo "selected";
                }
            echo">none</option>";
            $query = mysql_query("SELECT id, name from table1");
            while($query_fetch = mysql_fetch_assoc($query)){
                echo "<option value='".$query_fetch['id']."'";
                if(isset($_POST['category']) && $_POST['category']==$query_fetch['id'])
                {
                    echo "selected";
                }
                echo ">".$query_fetch['name']."</option>";
            }
            echo "</select>";
    ?>
</div>
  

上述代码的问题在于提交完成后所选元素保持选中状态。表单提交成功后,我需要select选项返回'none'。怎么办?

2 个答案:

答案 0 :(得分:0)

您的行中有语法错误:

if(!isset($_POST['postbtn)){

将其更改为:

if(!isset($_POST['postbtn'])){

我猜你没注意到的一些事情: 您在所发布的代码上方验证脚本,并且如果脚本已成功验证,则您希望选择“无”选项。

$selected_value = $validation ? $_POST['category'] : false; 

仅当验证正确时,才会设置值,否则将设置为false;

<?php
echo "<select name='category' id='catg_list' class='list_catg'>
        <option value='0'"; 
//CHANGE
            if($selected_value == 0){ //Or if($selected_value === FALSE ||$selected_value === 0)
                echo "selected";
            }
        echo">none</option>";
        $query = mysql_query("SELECT id, name from table1");
        while($query_fetch = mysql_fetch_assoc($query)){
            echo "<option value='".$query_fetch['id']."'";
//CHANGE
            if($selected_value !== FALSE && $selected_value == $query_fetch['id'])
            {
                echo "selected";
            }
            echo ">".$query_fetch['name']."</option>";
        }
        echo "</select>";
?>

答案 1 :(得分:0)

按照以下步骤简化代码以完成所需任务。

    $category = isset($_POST['category']) ? $_POST['category'] : 0;

    $array["0"]="none";
    $query = mysql_query("SELECT id, name from table1");
    while($query_fetch = mysql_fetch_assoc($query)){
        $id = $query_fetch['id'];
        $array[$id] =  $query_fetch['name'];
    }

    echo "<select name='category' id='catg_list' class='list_catg'>";
    foreach($array as $id=>$name) {
        $selected = $category==$id ? "selected" : "";
        echo "<option value='".$id."' ".$selected." >".$name."</option>";
    }
    echo "</select>";