使用 Javascript 进行正则表达式表单检查

Regex form checking with Javascript

本文关键字:表单 检查 正则表达式 Javascript 使用      更新时间:2023-09-26

我在javascript上遇到了一些真正的困难。

我正在尝试做的是验证来自 HTML 表单的用户输入。

我有两个 html 事件:

<form action="attendproc.asp" method="post" onSubmit="return validateForm(this)">
<input type="submit" id="submit" value="Submit" class="button" onClick="return submitForm()">

这是我的javascript:

//Confirm form submission
function submitForm() {
    if (confirm("Are you sure you want to submit this form?") == false) {return false} 
    else {return true}
}
//Validate form input
function validateForm(form) {
    fail = validDate(form.date.value)
    fail += validNum(form.jsia.value)
    fail += validNum(form.jsga.value)
    fail += validNum(form.yvcia.value)
    fail += validNum(form.yvcga.value)
    if (fail == "") {return true}
    else {alert(fail) return false}
}
function validDate(field) {
    if (/^'d{2}'/'d{2}'/'d{4}$/.test(field) == false) {return "Invalid date format. Please enter a valid date.'n"} 
    else {return ""}
}
function validNum(field) {
    if (isNaN(field)) {return "Invalid input. Please enter a valid integer.'n"} 
    else {return ""}
}

请注意,我正在使用正则表达式来验证我想要的日期格式。我肯定知道 submitForm() 函数有效。我的痛苦来自其他三个功能。请帮忙!

肖恩

我终于修复了它。

//Confirm form submission
function submitForm() {
    if (confirm("Are you sure you want to submit this form?") == false) {return false;} 
    else {return true;}
}
//Validate attendance form input
function validateAttendForm(form) {
    fail = validDate(form.date.value);
    fail += validNum(form.jsia.value);
    fail += validNum(form.jsga.value);
    fail += validNum(form.yvcia.value);
    fail += validNum(form.yvcga.value);
    if (fail == "") {return true;}
    else {alert(fail); return false;}
}
function validDate(field) {
    re = /^'d{1,2}'/'d{1,2}'/'d{4}$/;
    if (re.test(field) == false) {return "Invalid date format. Please enter a valid date.'n";} 
    else {return "";}
}
function validNum(field) {
    if (isNaN(field) || field != parseInt(field)) {return "Invalid input. Please enter a valid interger.'n";}
    else {return "";}
}

这是我用于 validDate() 函数的语法存在问题。这几乎是一个即插即用的修复。

除了阴暗的格式之外,肯定有一件事会导致问题。

isNaN(字段)应该是: isNaN(parseInt(field))

IsNaN 的计算结果仅为 true,字符串不是 NaN。ParseInt 尝试从字符串中解析 int,并返回一个数字或 NaN。