【问题标题】:How to display javascript error in form?如何在表单中显示 javascript 错误?
【发布时间】:2016-07-13 01:42:04
【问题描述】:

我有一个网站,您可以在其中上传新闻报道。新闻上传后,您可以对其进行编辑。问题是当您编辑 DATE 表单时,默认情况下它会自动将其显示为“0000-00-00”。

因此,当我在日期表单上输入“blacklivesmatter”时,它应该会显示一个 JavaScript 错误,指出“日期应仅以 YEAR-MONTH-DAY 格式输入”

这是我认为错误代码的样子:

echo "<script language='javascript'> alert('Date should be entered with YEAR-MONTH-DAY format only'); window.location='editnews.php'; </script>";

这是 PHP 页面的代码:

<?php
if(isset($_GET['id']))
{
    $id = $_GET['id'];
    $query = mysqli_query($con,"select * from news where ID = '$id'");
    $re = mysqli_fetch_array($query);
}
?>

<form method="post" action="editnews_action.php">
<h3><b><u>Title:</b><input type="text" name="title" value="<?php echo $re['Title']; ?>"/><input type="hidden" name="id" value="<?php echo $re['ID']; ?>"/></h3>
<h3><b><u>Detail:</b><input type="text" name="desc" value="<?php echo $re['story']; ?>"/></h3>
<h3><b><u>Date:</b><input type="text" name="date" value="<?php echo $re['DATE']; ?>"/></h3>
<center>
<br>
<input type="submit" value="Submit" name="submit">
</form> 

这里是操作页面:

<?php require 'connect.php'; ?>
<?php
session_start(); 
if(isset($_POST['submit'])) {

    $id = $_POST['id'];
    $title=$_POST['title'];
    $date= $_POST['date'];
    $story=$_POST['desc']; 

    $q = mysqli_query($con,"update news set Title = '$title', story = '$story', DATE = '$date' where ID = '$id'");
    if($q)
    {
        header("Location: adminside.php");
    }

}
?>

我应该把 javascript 错误放在哪里?

【问题讨论】:

  • 你可以很容易地在互联网上找到一个正则表达式,它可以满足你想要的任何格式。如果在字段更改时运行该正则表达式并且它无效,则您可以向用户显示警报或其他方式。更好的选择是使用来自 jquery-ui 之类的日期选择器,其中已经包含日期验证。 jqueryui.com/datepicker
  • 有几种方法可以做到这一点,取决于你想怎么做,可以通过,javascript:the-art-of-web.com/javascript/validate-date,php:php.net/manual/en/function.checkdate.php还有更多:)

标签: javascript php html


【解决方案1】:

您有几个选项可以在 javascript 中验证日期:

1.) new Date("date string") 如果无效,将返回“无效日期”。您可以检查这一点并按照您的意愿显示错误

function isDateValid(date) {
    var theDate = new Date(date);
    return theDate;
}

不是最好的选择。 new Date(1) 例如将返回一个有效日期。只有输入new Date('test') 之类的内容才会抛出“无效日期”

2.) 使用 bootstrap 或 jquery 或其他库提供的日期选择器。通常,这些日期选择器中已经有日期验证,因此您不必担心。这也为用户提供了一个更好的选择日期的界面。

在我看来,这是最好的选择。大多数日期选择器还将具有可配置的选项,因此您可以使验证更加灵活,有些甚至内置了错误消息,以便您也可以处理这部分

3.) 使用正则表达式针对输入的日期运行。您可以在那里找到许多不同的正则表达式来验证各种不同的格式。一个要研究的网站是 regexlib.com

var dateReg = /^\d{2}([./-])\d{2}\1\d{4}$/

"22-03-1981".match(dateReg) // matches
"22.03-1981".match(dateReg) // does not match
"22.03.1981".match(dateReg) // matches

这是一个不错的选择。

Javascript - Regex to validate date format

Javascript date regex DD/MM/YYYY

Regex for Date Validation in javascript

【讨论】:

    【解决方案2】:

    一些简单的,因为这可以工作

    session_start(); 
    if(isset($_POST['submit'])) {
    
        $id = $_POST['id'];
        $title=$_POST['title'];
        $date= $_POST['date'];
        $story=$_POST['desc']; 
    
    if (validateDate($date)) {
            $q = mysqli_query($con,"update news set Title = '$title', story = '$story', DATE = '$date' where ID = '$id'");
    
            if($q)
            {
                header("Location: adminside.php");
            }
    
        }else{
        /*
        * show error if date not valid
        */
            echo "<script language='javascript'> alert('Date should be entered with YEAR-MONTH-DAY format only'); window.location='editnews.php'; </script>";
        }
    }
    

    /* * 验证日期的功能 */ 函数 validateDate($date, $format = 'Y-m-d') { $d = DateTime::createFromFormat($format, $date); 返回 $d && $d->format($format) == $date; }

    【讨论】:

      猜你喜欢
      • 2015-06-19
      • 1970-01-01
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      • 2012-08-24
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多