用Javascript检查正则表达式

时间:2015-06-19 15:26:33

标签: javascript regex validation webforms

我在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 ""}
}

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

2 个答案:

答案 0 :(得分:0)

  

肖恩

我终于修好了。

//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()函数的语法问题。这几乎是一个即插即用修复。

答案 1 :(得分:0)

除了阴暗的格式外,肯定有一件事会引起问题。

isNaN(场) 应该是:isNaN(parseInt(field))

IsNaN仅使用NaN求值为true,而string不是NaN。 ParseInt尝试从字符串中解析int,并返回一个数字或NaN。