如何在表单中显示javascript错误?

如何在表单中显示javascript错误?,javascript,php,html,Javascript,Php,Html,我有一个网站,你可以上传新闻故事。新闻上传后,您可以编辑它。问题在于,编辑日期表单时,默认情况下,它会自动将其显示为“0000-00-00” 因此,当我在日期表单上输入“blacklivesmatter”时,它会显示一个javascript错误,指出“日期应仅以年-月-日格式输入” 以下是我认为错误代码的外观: echo "<script language='javascript'> alert('Date should be entered with YEAR-MONTH-DAY

我有一个网站,你可以上传新闻故事。新闻上传后,您可以编辑它。问题在于,编辑日期表单时,默认情况下,它会自动将其显示为“0000-00-00”

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

以下是我认为错误代码的外观:

echo "<script language='javascript'> alert('Date should be entered with YEAR-MONTH-DAY format only'); window.location='editnews.php'; </script>";
echo“警报('日期应仅以年-月-日格式输入”);window.location='editnews.php';”;
以下是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> 

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

1.
新日期(“日期字符串”)
如果无效,将返回“无效日期”。您可以对此进行检查,并按照自己的意愿显示错误

function isDateValid(date) {
    var theDate = new Date(date);
    return theDate;
}
这不是最好的选择<代码>新日期(1)
例如将返回有效日期。”只有在输入类似于
newdate('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
这是一个很好的选择


像这样简单的方法就行了

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>";
    }
}
session_start();
如果(isset($_POST['submit'])){
$id=$_POST['id'];
$title=$_POST['title'];
$date=$_POST['date'];
$story=$_POST['desc'];
如果(生效日期($日期)){
$q=mysqli_查询($con,“更新新闻集标题='$Title',故事='$story',日期='$DATE',其中ID='$ID');
如果($q)
{
标题(“位置:adminside.php”);
}
}否则{
/*
*如果日期无效,则显示错误
*/
echo“警报('日期应仅以年-月-日格式输入”);window.location='editnews.php';”;
}
}
/* *用于验证日期的函数 */ 函数validateDate($date,$format='Y-m-d'){ $d=DateTime::createFromFormat($format,$date); 返回$d&&$d->format($format)==$date;
}

您可以在internet上轻松找到一个正则表达式,它可以填充您想要的任何格式。如果在字段更改时运行该正则表达式,并且该正则表达式无效,则可以向用户显示警报或其他方式。一个更好的选择是使用一个日期选择器,它来自jQueryUI之类已经烘焙了日期验证的东西。有几种方法可以做到这一点,这取决于您想如何做到这一点,可以通过,javascript:,php:还有更多:)
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>";
    }
}