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

时间:2013-08-02 14:44:15

标签: php javascript jquery html javascript-events

我有一个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功能以及表单提交

  2. 并提交按钮代码:

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

    和javascript:

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

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

    它不起作用。


    请建议解决方案。

4 个答案:

答案 0 :(得分:4)

我不确定为什么你需要使用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

答案 1 :(得分:1)

<?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 } ?>

答案 2 :(得分:0)

使用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捕获,然后在innerHTML div上使用.output来放置responseText。然后,您可以使用JS / Jquery隐藏表单并显示.output

答案 3 :(得分:-1)

你可以用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
}