按下提交时div会消失

时间:2017-04-04 20:34:28

标签: javascript php jquery html twitter-bootstrap

我有一个包含7个选项的选择表单。根据所选的选项,将显示其中一个div(我使用jquery完成了这个)。

    <select class="form-control" id="select-1" style="width: 70%;margin: 0 
    auto;">
                <option selected disabled>Choose a product..</option>
                <option value="img-upload">Pencil art</option>
                <option value="img-upload">Oil painting</option>
                <option value="img-upload">Digital painting</option>
                <option value="img-upload">Invert art</option>
                <option value="typography-select">Typography</option>
                <option value="photo-restoration-select">Photo Restoration</option>
            </select>

如果我选择前4个选项,则显示带有类img-upload的div。该div用于上传图像。

<div class="img-upload" style="margin-top: 20px;">
            <div class="row">
                <?php echo $image_view ?>      
                <form method="post" enctype="multipart/form-data" class="center-block">
                    <input type="file" name="fileToUpload" id="fileToUpload" style="margin: 10px auto;">
                    <input type="submit" value="Upload Image" name="submit" class="btn btn-default center-block img-upload-btn" style="margin-bottom: 10px;">
                    <?php echo $error_msg."".$success_msg ?>
                </form>
        </div>
    </div>

单击按钮上传图像时,php脚本会运行以检查文件是否为图像。

<?php
$error_msg = "";
$success_msg = "";
$image_view = "";
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
    $uploadOk = 1;
} else {
    $error_msg .= '<p class="text-center" style="color:red;">File is not an image.Please upload a valid image format.</p>';
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
        $error_msg .= "";
    // if everything is ok, try to upload file
    } else {
        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        $success_msg .= '<p class="text-center" style="color:green;">Your photo has been uploaded.</p>';
        $image_view .= '<img src="'.$target_file.'" alt="Cover" class="img-responsive center-block" style="height: 250px;width: auto;">';
        } else {
          $success_msg .= '<p class="text-center" style="color:red;">Sorry, there was an error uploading your file.Please try again later.</p>';
        }
    }
}
?>

根据所选选项显示和隐藏div的jquery:

$('.img-upload').hide();
        $('.typography-select').hide();
      $('.photo-restoration-select').hide();
        $(function() {
        $('#select-1').change(function(){
            if ($(this).val() == "img-upload") {
                $('.img-upload').show();
                $('.typography-select').hide();
                $('.photo-restoration-select').hide();
            }else if ($(this).val() == "typography-select") {
                $('.typography-select').show();
                $('.img-upload').hide();
                $('.photo-restoration-select').hide();
            }else if ($(this).val() == "photo-restoration-select") {
                $('.photo-restoration-select').show();
                $('.img-upload').hide();
                $('.typography-select').hide();
            }
        });
        });

问题是,当页面加载时,会出现选择。如果我选​​择前四个选项之一,则应显示.img-upload div。(当我选择前四个选项中的任何一个时显示,问题。)

但是当我尝试选择图像并按上传时,.img-upload div就会消失。

我试图解决这个问题,但无法解决问题。任何帮助表示赞赏。

谢谢!

2 个答案:

答案 0 :(得分:1)

这有点奇怪的实现你到那里(为什么不捕获当前选择的选项并切换所有的兄弟姐妹,反之亦然)..但无论如何,从快速看我可以告诉你,你应该用ajax处理这个提交以防万一你不希望再次渲染DOM并加载你的jQuery的第一行,上面写着 $('。img-upload')。hide(); ,实际上每次刷新都会隐藏你的div

答案 1 :(得分:-1)

如果单击提交按钮,表单将发布到您的服务器 - 很可能这会导致页面刷新和页面加载,您的jQuery将隐藏.img-upload div。你确定没有按照你想要的方式发布吗?