在 html 表单提交后显示隐藏的 div 以显示输出

新手上路,请多包涵

我有一个 html 表单来收集姓名和地点,在用户提交表单后,输出将使用 PHP echo 显示在页面底部

我的要求是,

在表单提交之前和用户输入数据并提交之后隐藏 output div ,我必须使 output div 可见以使用PHP echo显示表单输出。

这是我的 HTML 代码:

 <div class="main">
    <form id="main" name="main" action="#text" method="post">
        <div class="input">
            <div id="name">
                <div class="block">
                    <div class="input-quest">Your Name</div>
                    <div class="input-resp"><span><input  class="textbox" id="nm" name="nm" type="text"  value="" /></span>
                    </div>
                </div>
            </div>
            <div id="place">
                <div class="block">
                    <div class="input-quest">Your Place</div>
                    <div class="input-resp"><span><input  class="textbox" id="pl" name="pl" type="text" value="" /></span>
                    </div>
                </div>
            </div>
        </div>
        <div class="submit">
            <input id="generate" type="submit" name="script" value="generate" />
            <input type="submit" id="clear" name="clear" value="clear" />
        </div>
    </form>
    <div class="output">
        <?php $name = $_POST['nm']; $place = $_POST['pl']; echo "Hello, I am $name and I am from $place"; ?>
    </div>
</div>

它在 output div 部分包含 PHP 回显代码。

我在以前的问题中搜索了解决方案,并尝试了下面提到的方法:

1.为 output div 来隐藏它

<div id="output" style="display: none;">
    <!-- echo php here -->
</div>

并在提交期间添加 JavaScript 以调用函数

$('main').submit(function(){
    $('#output').show();
});

它没有用。


2.尝试使用以下 JavaScript 代码

$('main').submit(function(e){
    $('#output').show();
    e.preventDefault();
});

它没有用。


3.删除了输出 div 的内联 CSS 以隐藏并将其添加到我的 CSS 样式表中

<div id="output">

在样式表中

#output{
    display:none;
}

并在提交时使用下面的 JavaScript 代码

$('main').submit(function(){
    $('#output').css({
        'display' : 'block'
    });
});

它没有用。


  1. 添加了 onclick 函数以及表单提交

并提交按钮代码:

 <input  id="generate" type="submit"  name="script" value="generate" onclick="showoutput()"/>

和JavaScript:

 showoutput(){
    $('#output').slideDown("fast");
}

showoutput(){
    $('#output').show();
}

它没有用。


请提出一个解决方案来做到这一点。

原文由 acr 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 404
2 个回答

我不确定为什么你需要为此使用 js/css。只需检查变量是否已发布,如果已发布,则回显它们(您必须将表单操作设置为指向同一页面):

 <?php if (!empty($_POST['nm']) && !empty($_POST['pl'])) { ?>
  <div class="output">
    Hello, I am <?php echo $_POST['nm']; ?>, and I am from <?php echo $_POST['pl']; ?>
  </div>
<?php } ?>

如果您只是想在 div.output 中显示名称和地点,而不实际提交表单,您可以这样做:

 $('#main').submit(function(e) {
  e.preventDefault(); // prevent form from being submitted
  $('div.output').text('Hello, I am ' + $('#nm').val() + ', and I am from ' + $('#pl').val());
});

这是一个小提琴

原文由 billyonecan 发布,翻译遵循 CC BY-SA 3.0 许可协议

<?php if(isset($_POST['nm'])) { ?>
<div class="output">
    <?php $name = $_POST['nm']; $place = $_POST['pl']; echo "Hello, I am $name and I am from $place"; ?>
</div>
<?php } ?>

原文由 Guillaume Lehezee 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题