【问题标题】:(JQuery/PHP) Validating data before submit(JQuery/PHP) 提交前验证数据
【发布时间】:2012-01-22 21:36:14
【问题描述】:

在输入数据后立即验证输入(表单)数据的最佳方法是什么?

我的想法是在输入旁边有一个 DIV,在这个 div 中我们会看到一条消息,说明数据是否有效,例如:

Your name:
<input type="text">
<div id="data-validation"></div>

<script>
$("input").change(function(){
    $("#data-validation").load("data-validation.php?input="+$(this).val());
});
</script>

//data-validation.php
<?php
$input = $_GET["input"];
if(strlen($input) < 3)
    echo "Name must have at least 3 characters.";
?>

PHP 负责验证和显示数据。

恐怕有更好的方法可以做到这一点,我想知道最好的方法是什么。

【问题讨论】:

  • 对于“按输入”阶段的验证,如果您的验证规则只是关于字符数、格式和/或数据类型,我建议您全部使用 JavaScript。如果您出于某种原因想要检查数据库(例如,验证街道地址或其他东西)那么您可以使用类似于您的示例的 Ajax/PHP。请注意,您的示例中的.change() 事件将永远不会被触发,因为您已将其设置在 div 而不是输入上。此外,请注意,一旦实际提交表单,您应该始终(重新)验证 所有 PHP 中的字段。
  • 是的,你是对的。我还必须在提交后重新验证所有数据,否则很容易被破解。谢谢。
  • Validation by JavaScript的可能重复

标签: php jquery html forms input


【解决方案1】:

绝对!

您可以从 JavaScript 端进行大部分字符串检查,以防止对服务器的不必要调用。您仍然保留您的 PHP 检查,但现在您想将它们复制到 JavaScript 端,例如:

$("#data-validation").change(function(){
    if($(this).val().length >= 3) {
       $(this).load("data-validation.php?input="+$(this).val());
    } else {
       alert("Name must have at least 3 characters.");
    }
});

如果您有多个检查,而不是检查长度,请检查在 JavaScript 端执行一系列任务的函数。你要确保你的 PHP 做同样的事情,因为浏览器的 JavaScript 很容易被绕过。您希望通过减少对服务器的调用来优化,并利用更多的本地资源。

【讨论】:

  • 我明白你的意思。但是我尽量让我的例子尽可能简单,我实际上也必须做一些服务器端验证,因为这些数据将保存在 MySQL 上,并且不能有重复数据,所以是的,只有 javascript 赢了不做这项工作。谢谢。
【解决方案2】:

我强烈建议您使用jQuery Validate,您仍然需要在 php 方面进行验证,但这将为您节省大量的 UI / jQuery 方面的工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 2014-02-12
    • 2016-12-30
    相关资源
    最近更新 更多