php - Javascript 验证

标签 php javascript

我只是想向同一页面提交一个简单的表单,但是当它被提交时,它会在同一页面上调用 PHP 函数。但是,我试图在提交之前进行一些 JavaScript 验证。所以我想知道在表单标签中使用 onSubmit 调用 js 函数和在按钮上使用 onClick 调用 js 函数有什么区别....这就是我目前正在尝试做的。

<?php
  function tobecalled()
  {
    echo "This was run";
  }
?>
<html>
  <head><title>Testing</title>
    <script type="text/javascript">
    function testResults (form) 
    {
      var TestVar = form.inputboxname.value;
      if(TestVar == '')
        return false;
      else
        return true;
    }
    </script>
  </head>
  <body>
    <form action="<?php $_SERVER['PHP_SELF'] ?>" method="POST" onSubmit="return testResults(this);">
      <input type="text" name="inputboxname" />
      <input type="submit" value="Save" name="submit" />
      <?php
      if(isset($_POST['submit']))
      tobecalled();
      ?>
    </form>
  </body
</html>

它有效..

但是如果我让(通过 JS 提交)

<form action="<?php $_SERVER['PHP_SELF'] ?>" method="POST">
  ...
  <input type="submit" value="Save" name="submit" onClick="return testResults(this);"/>
  ...

它仍然调用 PHP 函数 tobecalled() -- 为什么?我期待它不打电话。它是如何工作的?

最佳答案

它允许它通过的原因是因为您在 onclick 事件中传递了 this。在这种情况下,this 指的是提交按钮,而不是函数所需的表单。

因此 form.inputboxname.value 返回 undefined,它不是 ''(空字符串),因此 testResults 函数返回 true。因此提交被激活。

关于php - Javascript 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4741538/

相关文章:

php - 使用 PHPExcel 函数将日期和日期时间写入 Excel 中作为文本

php - 如何按订单更换

javascript - JQuery/infinitescroll 和同位素 - 检查重复项并删除

javascript - Card Board 的 filterBoard() 函数是什么?

php - Yii2-admin 和 Yii2-user 兼容性

PHP/MYSQL - 将多行插入一列,通过 phpmyadmin 工作但仅部分通过 myqli 准备语句?

javascript - 第一次悬停时未显示 ajax 调用后附加到标题标签的数据

javascript - 如何使用 Javascript 隐藏 CRM 2016 中的功能区按钮

javascript - 如何动态地将行/列添加到 Google 柱形图

PHP if 语句比较总是返回 true