当document
就绪时,我有一个div
设置为hide()
。我希望这个div在包含的div可见时出现。我还有一个接受用户输入的表单。表单被重定向到其页面action ="<?php echo htmlentities($_SERVER['PHP_SELF']);?>"
。提交有一个类.submitRecord
。成功将记录提交到DB后,包含的div将可见。
PHP代码:
if (isset($_POST['submitRecord']) && $success != ''){
echo "<div class='containingDiv'>";
echo "<div class='alloc'>";
echo "<p class = 'closeButton'> x </p>";
echo "<p class = 'allocationSuccess'>Allocation Successful for Mr/Mrs ABC</p>";
echo "</div>";
echo "</div>";
};
jQuery代码:
$(document).ready(function(){
$('.containingDiv, .alloc').hide();
$(document).on('click', '#saveRecord', function () {
if ($(".containingDiv").is(':visible')){
$('.alloc').slideDown(500);
}
});
$(document).on('click', '.closeButton', function () {
$('.alloc').hide(500);
});
});
表单被提交,var
$success
被分配了一个字符串,但.alloc
不会显示。
任何帮助都将不胜感激。
根据您的标题,您使用的是普通表单提交(无ajax(。这意味着事件的流程类似于:
- 您的按钮被点击
- 您的javascript函数被触发,试图为不在页面上的
div
设置动画 - 访问者被重定向到提交表单的页面,即使有动画,访问者也不会因为重定向而看到它
- 处理表单并显示新页面(此处未触发javascript onClick事件(
- 成功的
div
被添加到页面中,但保持隐藏状态
有两种解决方案:
- 您使用ajax提交表单,将所有内容保持在同一页面中,并为您想要的内容设置动画
- 您在成功页面上显示成功框,而不是在页面加载时隐藏它,并且只在单击某个
timeOut
或按钮后隐藏它。请注意,您不必在页面加载时隐藏该框,因为它只会在成功提交表单时添加到页面中