我有一个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'
});
});
它不起作用。
添加了onclick功能以及表单提交
并提交按钮代码:
<input id="generate" type="submit" name="script" value="generate" onclick="showoutput()"/>
和javascript:
showoutput(){
$('#output').slideDown("fast");
}
和
showoutput(){
$('#output').show();
}
它不起作用。
请建议解决方案。
答案 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());
});
答案 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
}