【问题标题】:Regex form checking with Javascript使用 Javascript 进行正则表达式表单检查
【发布时间】:2015-06-19 15:26:33
【问题描述】:

我在使用 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() 函数有效。我的痛苦来自其他三个功能。请帮忙!

【问题讨论】:

  • 欢迎来到 StackOverflow。详细说明肖恩的评论:你的问题是什么?你遇到什么样的“痛”?您收到错误消息吗?意想不到的结果?您越具体,就越有可能有人提供帮助。

标签: javascript regex validation webforms


【解决方案1】:

肖恩

我终于修好了。

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

【讨论】:

    【解决方案2】:

    除了格式不明确,肯定还有一件事会导致问题。

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

    IsNaN 仅在使用 NaN 时才计算为 true,并且 string 不是 NaN。 ParseInt 尝试从字符串中解析 int,并返回一个数字或 NaN。

    【讨论】:

    • 可疑格式是什么意思?我想尽我所能改进我的代码。
    • 没什么很重要的,只是一些次要的东西,比如在 submitForm 中的冗余(也可以是 return confirm(...)),两行很长,大括号之间没有空格。
    • 啊,好吧。感谢您的提示!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 2011-05-09
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多