1

我希望能够在文本更改后检查文本框中的文本,并报告问题所在。这是一个注册表。

这是 register.php 的一部分,其中

<form action"" method="post">
<ul class="ul-reg">
<li>
<p>Username: </p><input name="username-field" type="text" onblur="someFunction()" /><span id="UsernamehelpText">      </span>
</li>
</ul>
</form>

然后我将有一个 registerfunctions.php,我将在其中存储所有用于检查长度、字符、可能是正则表达式等的函数。我调用什么函数并不那么重要。我只是不知道怎么称呼他们。

形成我所看到的跨度是你发布错误的地方,但是如果我有任何其他选项我打开它,我想要的只是能够将错误文本发布在与文本框相同的行中

我已经检查了 JavaScript 和 AJAX,但我对此很陌生,并不真正了解它是如何工作的。

4

2 回答 2

2

在评论中讨论后,我明白你想要什么。

首先,一个解释。有两个地方进行验证:在您的前端(您的网页)和您的后端(在保存发布值的 PHP 脚本中)。任何你真的不想保存的东西——例如未转义的 SQL 字符串、太长的字段等等——必须在 PHP 中进行验证,因为绕过 Javascript 验证很简单。例如,没有什么可以阻止某人向您的服务器发送包含非法值的 POST,甚至无需访问您的网页。

即使您需要在后端执行验证,在前端执行相同的验证仍然是用户友好的,因此用户不必等待很长时间才能看到错误。这也减少了到您的服务器的流量。在一个大项目中你可能想做的事情是有某种系统来集中编写验证规则,然后使用这些规则动态生成 PHP 和 Javascript 验证。这样做的好处是您不会在两个地方重复您的业务规则,但在较小的项目中可能不值得麻烦。

前端的验证看起来像这样:您将一个事件处理程序绑定到一个或多个适当的事件(例如,您可以添加 onkeydown="validateUserName()" 以便验证反应更快一些),并适当地更新您的警告文本.

<form action="" method="post">
  <ul class="ul-reg">
    <li>
      <p>Username: </p>
      <input id="username" name="username-field" type="text" onblur="validateUserName()" />
      <span id="UsernamehelpText"></span>
    </li>
  </ul>
</form>

<script type="text/javascript">
  function validateUserName() {
    var userNameElement = document.getElementById('username');

    //Do your work: Get the value of the user name field, check
    // the values against your validation rules...

    var helpText = document.getElementById('UsernamehelpText');
    if(isValid)
      helpText.innerHTML = "";
    else
      helpText.innerHTML = "Invalid!";
  }
</script>

在后端,当您处理表单时,您必须检查 PHP 中的相同规则,以防止非法值被恶意发布或由于 Javascript 中的错误而被发布。如果发现错误,您不保存,而是可以使用输入字段中提交的值和指示无效的消息重新呈现表单 - 这允许用户更改他们的输入而不会丢失他们的值提交。

于 2012-12-06T16:31:32.847 回答
1

使用jQuery,它看起来像这样:

function someFunction() {
  $.ajax({
    url: "checkStuff.php",
    data: $("input[name='username-field']").serialize,
    success: function(data) {
      if (data == "correct") {
        $("#UsernamehelpText").html("Valid");
      } else {
        $("#UsernamehelpText").html("Invalid");
      }
    }
  });
}

您的 PHP 可能非常简单,只需检查输入的有效性,然后回显“正确”(如果是)。

于 2012-12-06T12:13:05.403 回答