有问题的PHP联系人表单内DIV设置为显示:默认情况下没有


Having Problems with a PHP Contact Form Inside DIV Set to Display:none by Default

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

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

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

谢谢你的帮助

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

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

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

你也可以在不重新加载页面的情况下提交表单,例如使用JQuery。形式

如果表单和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>

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

阅读你上面的评论,我相当有信心,我们正在寻找错误的功能来编辑。包装器元素不存在于您发布的函数中,这是需要将其显示切换的原因。

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

在那个插件的某个地方会有定义表单包装器元素的东西

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

你可以把这行分开,并添加一个内联样式属性来测试post数据,如果发现

$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)它至少有一个元素(这是使用类型杂耍将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存在,并且$this的属性id与最初绘制表单时相同,这样我们就可以查找与特定联系人表单相关的post数据。(我们正在寻找的名称是基于您作为评论发布的代码示例)

不幸的是,没有看网站/插件的来源,我不可能告诉你在哪里可以找到你要找的东西。一旦你找到了它,这两种情况中的一种应该可以解决你的问题。

这是一个公开可用的插件,我们可以看看还是内部开发的东西?