【问题标题】:Display a hidden div after a html form submit to show output在 html 表单提交后显示隐藏的 div 以显示输出
【发布时间】:2013-08-03 21:29:02
【问题描述】:

我有一个 html 表单来收集姓名和地点,用户提交表单后,out 将使用 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添加了一个内联css标签来隐藏它

<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();  
}

没用。


请提出解决方案。

【问题讨论】:

  • 用php设置div的显示。 javascript 将无法工作,因为提交将重新加载页面
  • $('main') 没有任何意义使用$('#main') 然后尝试
  • 为什么需要 jQuery/CSS 呢?如果正在提交表单,只需检查$_POST['nm'] &amp;&amp; $_POST['pl'] 是否存在,如果为真,则回显它们和div
  • 如果你真的想让它提交并做你想做的事,你需要使用ajax,否则,当你提交时它会重新加载,或者去action页面。如果您使用 ajax,请使用 onclick 函数进行提交。在你使用的函数里面,添加你想要的淡出/入。
  • @ billyonecan :我没有尝试使用方法,因为它必须重新创建一个 div id。相反,我想到了使用 show \ hide 选项。

标签: php javascript jquery html javascript-events


【解决方案1】:

我不知道为什么你需要为此使用 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());
});

Here's a fiddle

【讨论】:

  • @billyonecan :我更喜欢使用 php 代码,因为我很容易回显函数。在您的第一个示例中,它不会在初始页面加载期间隐藏输出 div。
  • 第一次加载页面时,div 甚至都不存在。只有满足if 条件时才会存在
  • @billyonecan:在哪里可以在第一个选项中添加 else 语句?就像如果访客没有输入姓名和地点,我需要在输出中显示一条消息,例如“请输入以上值”。我试图在底部添加 else 语句,但不起作用
【解决方案2】:
<?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 } ?>

【讨论】:

    【解决方案3】:

    使用 javascript/jquery (ajax) 创建一个单独的页面来处理您的 form,并让它返回您想要的信息,隐藏 form 并显示 .output div。

    PHP 页面:

    <?php 
    
        $name = $_POST['nm']; 
    
        $place = $_POST['pl']; 
    
        echo "Hello, I am ".$name." and I am from ". $place; 
    ?>
    

    javascript/jquery 会将其捕获为responseText,然后在您的.output div 上使用innerHTML 来放置responseText。然后,您将使用 JS/Jquery 隐藏表单并显示 .output

    【讨论】:

    • 抱歉,如果不清楚,不确定您使用的是 jquery 还是 javascript。
    【解决方案4】:

    您实际上可以完全使用 php 完成此操作。我将使用的最简单的方法是使用给定值进行隐藏输入。用户提交表单后,该变量将存在,您可以在 php 中获取它。

    首先,您需要将整个页面更改为 .php,并回显您的所有 html。然后在表单中,将操作设置为页面名称,以便它将变量发送给自己,然后您可以在同一页面上处理它们。


    将此添加到 html:

    <input type='hidden' name='display' value='display' />
    

    在你的 php 中,添加:

    if (isset($_POST['display']){
         echo "make the div here";
    }else{
         //don't show the div
    }
    

    【讨论】:

    • 您不需要重新加载页面才能正常工作吗?他希望“输出”显示他的信息并隐藏表单,但他需要从另一个 PHP 页面获取该信息,因为 php 仅在页面加载时加载一次。 AJAX 是他唯一的选择。
    • 当用户按下提交按钮时,页面实际上会重新加载,但也会将提交的表单中的变量发送到服务器以供在php.ini中使用。当使用“get”方法提交表单时,在站点的 URL 中很容易看到这一点。 Post 只是隐藏它们。提交表单时,变量“display”将存在于php中并允许此代码工作。
    • 但这并不能帮助他隐藏他的表单,并且只有在他将表单提交到同一页面时才会起作用。
    • 这确实有助于他隐藏他的表单,因为如果表单尚未提交,html 将永远不会得到回显。是的,它只有在提交到同一页面时才有效,但这是最简单的方法,而 AJAX 对此太过分了。
    • 如果您实际上没有提交任何内容,您甚至不必使用 ajax。你也不需要 php。
    猜你喜欢
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 2017-08-30
    • 2017-08-02
    • 2014-11-24
    相关资源
    最近更新 更多