【问题标题】:Open a hidden JavaScript form when linked from a different page从不同页面链接时打开隐藏的 JavaScript 表单
【发布时间】:2014-06-08 13:49:27
【问题描述】:

我不知道这个问题是否有答案,但我会试着解释一下,希望有足够聪明的人来帮助我:)。

好的:

对于学校,我有一个网站,您可以在其中登录和注册等。在我的索引中,包含登录和注册表单,但使用 JavaScript 隐藏。通过按一个按钮,您将能够登录或注册(其中一个表格将出现)。但问题是:我正在另一个页面上使用 php 检查注册表单,并且错误以该页面上的表单输出。

但是,当您返回注册/登录页面时,它当然是隐藏的,并且所有输入都从用户那里消失了,他们必须重新输入所有内容。我表单中的这个<? if(isset($_POST['example'])){echo htmlentities ($_POST['example']);} ?> 不再起作用了。将其他页面中的代码放入我的索引中似乎不是一种选择。

提前感谢您的回复,

保罗

编辑 - 我将发布一些代码以使其更清晰。要隐藏和切换的javascript:

'$(document).ready(function(){ $("#login").hide(); $("#registerincl").hide(); $("#loginb").click(function(){ $("#login").toggle(); $("#loginb").hide(); $("#guest").hide(); $("#registerincl").hide(); $("#register").hide(); $("#hh").hide(); }); $("#register").click(function(){ $("#registerincl").toggle(); $("#register").hide(); $("#loginb").hide(); $("#guest").hide(); $("#hh").hide(); $("hr").hide(); }); $('#guest').click(function() { window.location='guest.php'; }); });'

当然是我的注册验证页面的链接:

<form action="/register" method="post" target="">

还有一些php代码

if (isset($_GET['success']) === true && empty($_GET['success']) === true) {
echo 'Je bent geregistreerd. Ga naar je email en activeer je account!';
} else {
if (empty($_POST) === false && empty($errors) === true) {
    $register_data = array(
        'username'      => $_POST['username'],
        'joined'        => $_POST[$time],
        'password'      => $_POST['password'],
        'first_name'    => $_POST['first_name'],
        'last_name'     => $_POST['last_name'],
        'email'         => $_POST['email'],
        'email_code'    => md5($_POST['username'] + microtime())
    );
           register_user($register_data);
    header('Location: register.php?success');
    exit();

} else if (empty($errors) === false) {
    //echo output_errors($errors);
            }



<form action="/register.php" method="post">
        <ul class="login">
            <li>
                <h1>We konden je niet registreren!</h1>
                <?php
                    echo output_errors($errors);
                }
                ?>
            </li>
            <li>
                <br><br><br><a href="index">Probeer opnieuw</a>
            </li>
        </ul>
    </form> 

【问题讨论】:

  • 1.您可能应该发布更多代码以获得准确的答案。 2. 在处理错误的第 2 页上,您可以将用户提供的值放入 $_SESSION 变量中。在您的表单中,您只需将 $_SESSION 值放入输入字段即可。
  • 使用 AJAX 将请求发送到您的 PHP,然后它应该提供适当的响应对象,您可以在页面上呈现该对象,同时保持表单值
  • Yoda 的方法会更简洁、更专业 - 但可能您将不得不重新编写大量代码。
  • 您是否有可用的 jQuery 或将其添加到此项目的能力?呃,我讨厌写那个,如果你这样做的话,这将是一个快速解决这个问题的方法。
  • @Yoda 这听起来是个好主意,但我该怎么做呢? :$

标签: javascript php validation show-hide


【解决方案1】:

您想在没有操作的情况下构建您的表单,让字段保持原样。

使用 jQuery,您应该向表单提交添加一个事件处理程序,以防止默认操作,然后继续获取表单数据并将其 AJAX 到您处理注册的 PHP 类。然后,您可以处理成功和错误事件,并对返回的数据执行您需要执行的操作。下面的链接说明了如何使用 JSON 数据从 php 回复您的 javascript。

这是一个带有事件处理程序的示例 AJAX 请求,因此您可以看到我在上面所说的内容。你可以找到一个不错的综合教程here

$(function() {
  $(".button").click(function() {
    // validate and process form here
  });
});

$.ajax({
  type: "POST",
  url: "bin/process.php",
  data: dataString,
  success: function() {
    $('#contact_form').html("<div id='message'></div>");
    $('#message').html("<h2>Contact Form Submitted!</h2>")
    .append("<p>We will be in touch soon.</p>")
    .hide()
    .fadeIn(1500, function() {
      $('#message').append("<img id='checkmark' src='images/check.png' />");
    });
  }
});

【讨论】:

  • 我花了一些时间才弄明白,但这确实有效!很棒的网站,谢谢帮助
猜你喜欢
  • 1970-01-01
  • 2020-03-11
  • 2013-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-28
  • 1970-01-01
相关资源
最近更新 更多