【发布时间】:2019-03-21 02:19:13
【问题描述】:
我现在设置的是一个登录表单和一个注册表单,它们设置在一个页面中,但它使用一些 Jquery 在表单之间来回切换。当登录表单显示时,注册表单被隐藏,反之亦然。页面加载时,会显示登录表单,并隐藏注册表单,并可以通过按钮在两者之间切换。这是我遇到的问题。我用一些 PHP 在注册表单上创建了一些错误处理程序(只有在页面最初加载时才显示登录表单),所以说当用户输入无效的用户名时,我想将他们正确输入的字段返回给通过 URL 形成。问题是当我返回 URL 时显示登录表单,而不是我需要从 URL 输入数据的注册表单。我正在寻找一种在页面加载时直接访问注册表单的方法,也许有一种方法可以将链接直接附加到注册表单本身?我希望我能清楚地描述我的问题。任何帮助表示赞赏。
<?php
require 'header.php';
?>
<div class="form-data text-center">
<h1 class="form-header">Header</h1>
<div id="login" class="main-login">
<form class="login-form" action="includes/login.inc.php" method="post">
<input name="mailuid" type="text" placeholder="Page Name"></input>
<br>
<input name="pwd" type="password" placeholder="Password"></input>
<br>
<button name="login-submit" type="submit">Login</button>
</form>
<p>Need to create a page?</p>
<a class="btn btn-default" href="#" id="toggle-signup">Sign up</a>
</div>
<div id="signup" class="text-center">
<form href="login_signup/signup" class="signup-form" action="includes/signup.inc.php" method="post">
<input name="pagename" type="text" placeholder="Page Name"></input>
<br>
<input name="email" type="text" placeholder="Email"></input>
<br>
<input name="pwd" type="password" placeholder="Password"></input>
<br>
<input name="pwd-repeat" type="password" placeholder="Repeat Password"></input>
<br>
<button name="signup-submit" type="submit">Login</button>
</form>
<p>Already have an account?</p>
<a class="btn btn-default" href="#" id="toggle-login">Log In</a>
</div>
</div>
<script>
$("#toggle-login").click(function(){
$("#signup").hide().attr("formnovalidate");
$("#login").show();
});
$("#toggle-signup").click(function(){
$("#login").hide().attr("formnovalidate");
$("#signup").show();
});
$("document").ready(function(){
$("#signup").hide();
});
</script>
【问题讨论】:
-
您的页面需要确定要显示的表单,然后将其作为参数(与 PHP 相呼应)放入您的
.ready函数中,而不是始终使用signup。 -
您能再解释一下吗?我是 php 新手
-
你可以让生活变得轻松并使用 2 页,我知道所有酷孩子都使用 jquery,但这并不意味着它是适合每项工作的工具
-
您没有显示任何使用提交的表单数据做出决定的代码,所以我无法具体说明。但是,无论该代码在哪里,您都可以设置一个要隐藏的变量:默认情况下为
$hide = 'signup';,如果他们尝试注册,则为$hide = 'login';。然后在你的.ready函数中,$("<?= $hide ?>".hide();。 -
是的,我知道使用两个不同的页面是一个简单的解决方案。只是想知道如何以这种方式完成。