如何比较现场数据与另一个

时间:2012-02-14 22:49:21

标签: javascript

我有一个通过javascript验证的PHP表单。我想在用户必须确认其电子邮件的表单中添加另一个字段。我怎么能在javascript验证文件中这样做呢? 以下是我目前对初始电子邮件表单的验证:

this.setHandler('email',
        function (value) {
            regex=/^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
            return regex.test(value);
        }
    );

2 个答案:

答案 0 :(得分:1)

改编这样的东西......

this.setHandler('email-confirm',
    function (value) {
        return value == document.getElementsByTagName('email')[0].value;
    }
);

假设确认电子邮件name(或setHandler()的第一个参数)为email-confirm,原始电子邮件输入为name }是email(假设它是第一个元素)。

基本上,我将email-confirm的当前值与原始值进行比较,如果它们相等,则函数返回true

答案 1 :(得分:0)

当然,真正的答案是在编写正则表达式来验证电子邮件时要小心,因为大多数人都会弄错。你忽略了myname+other@domain.com之类的第一部分以及custom top-level domains的失败。

如果可以,请使用现有的库jquery-validate,因为他们已经为您完成了艰苦的工作,并且内置了电子邮件验证以及字段比较。

如果您需要自己编写,请使用better expression

/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\
".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA
-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/

无论如何,你实际上已经询问过如何“确认”他们的电子邮件......这不仅仅是将一个字段与另一个字段进行比较的问题。

// using jQuery
this.setHandler('email2',
    function (value) {
        return (value == $("#email").val());
    }
);