DIV内部的PHP联系人表单出现问题设置为显示:默认情况下为none

时间:2011-10-20 16:27:02

标签: php forms html contact

我们正在使用PHP为使用GetSimple 3.0 CMS的图库网站构建产品页面。我们正在尝试创建单击按钮时显示的联系表单。默认情况下,联系表单位于DIV中,该DIV设置为display:none。单击按钮时,显示:block。当用户单击表单的提交按钮并调用该操作时,它会加载contact.php文件并重置DIV以显示:none,导致用户看不到其表单已提交的确认文本。您只能通过再次单击联系人按钮并显示该DIV手动阻止来查看它。

我们希望在单击提交按钮后,联系人表单DIV会保持不变。我不认为显示我们的代码会有所帮助。我们只是想尽可能找到实现这个想法的方法。

目前我们的网站还处于开发阶段的早期阶段,并且仍在本地托管。

感谢您的帮助。

4 个答案:

答案 0 :(得分:0)

使用该特定表单的ajax提交,以便即使页面不会刷新也不会丢失焦点

答案 1 :(得分:0)

编辑:完全更改以反映所获得的新信息,以便更直接地解决问题。

阅读上述评论我非常有信心我们正在查看错误的编辑功能。包装元素不存在于您发布的功能中,需要将其显示切换。

一旦你找到那段代码,我们就可以编辑它来查找帖子数据的存在,这表明在表单提交发生后页面正在加载(我不能保证这不会导致它如果此页面上有多个表单,则在错误的时间触发)并在样式属性中写入,如果测试为true,则覆盖默认值。

在该插件中的某些地方会有一些定义表单包装元素的内容

$html = '<div id="some-unique-id" class="some-class-name">';

你可以分解这一行并对发布数据进行测试,如果找到则添加内联样式属性

$html = '<div id="some-unique-id" class="some-class-name"'; //tag left open

if(isset($_POST) && (count($_POST))){ //Some Post Data Exists
  $html .= ' style="display:block;"'; //Add display overwrite
}//Some Post Data Exists

$html .= '>'; //close the tag

我们在这里执行的测试是if(isset($_POST) && (count($_POST))){,它正在检查以确保A)$_POST存在并且B)它至少有一个元素(这是使用类型juggling来转换数字结果从count()到其布尔等效项(其中大于0的任何内容将测试true

现在,正如我所提到的,此页面上可能有多个表单,之后可能会显示,当您不希望显示时,它会自动显示您的联系表单。根据您在注释中提供的示例,它看起来像一个类中存在此函数。如果我们要查找的代码块存在于同一个类中,则可以利用id属性来限制检查以从您感兴趣的表单发布数据。

$html = '<div id="some-unique-id" class="some-class-name"';

//Check for contact form specific post data 
//(if $this->id is within scope and still the same)
if(isset($_POST) && (isset($_POST['p01-contact' . $this->id]))){
  $html .= ' style="display:block;"'; //Add display overwrite
}//Post Data Exists

$html .= '>';

在此测试中,我们希望$this存在且id的属性$this与最初绘制表单时的属性相同,因此我们可以查找发布与特定联系表单相关的数据。 (我们要查找的名称是基于您发布的评论代码示例)

不幸的是,如果不查看网站/插件的来源,我就无法告诉您在哪里可以找到您想要的内容。一旦找到它,虽然这两种方案中的一种应该有希望解决您的问题。

这是我们可以查看的公开插件还是内部开发的插件?

答案 2 :(得分:0)

如果您可以编辑用于构建页面的PHP代码,您可以随时根据请求动态显示样式,如下所示:

<div style="display:<?php echo (isset($_REQUEST['answer'])) ? 'block' : 'none';?>>
    Thank you!
</div>
<form action="contact.php" method="post">
    <input type="hidden" name="answer" />
     ...
</form>

您也可以在不重新加载页面的情况下提交表单,例如使用JQuery.Forms

答案 3 :(得分:0)

如果表单和PHP文件都位于 Contact.php 中,您可以考虑使用它:

<div id="formWarp" <? if($_POST["contact"] == "true"){ echo 'style="display:none" '; } ?>>
   <form method="POST" action="Contact.php">
     <input type="text" name="something"/>
     <input type="hidden" name="contact" value="true"/>
   </form>

您可以在表单中包含任何其他<input>