首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >客户端JavaScript验证不起作用

客户端JavaScript验证不起作用
EN

Stack Overflow用户
提问于 2014-04-14 09:07:57
回答 1查看 242关注 0票数 0

我不熟悉电子邮件验证。有人能帮我找出它为什么不能正常工作吗?我有一个简单的表单,其中包含名称,密码,确认密码,电子邮件和URL字段。如果这些字段中有任何错误,我不希望处理表单。如果没有错误,我想显示一条消息your form is submitted succesfully

下面是代码。

HTML:

代码语言:javascript
运行
复制
<form id='contactForm'>
    <label for='firstAndLastname'></label>
    <input type='text' data-count='0' placeholder='Firstname Lastname' name='firstAndLastname' class='fName' />
    <span></span>

    <label for='password'></label>
    <input type='password' data-count='1' placeholder='Password' name='password' class='password' />
    <span></span>

    <label for='confirmPassword'></label>
    <input type='password'  placeholder='Confirm Password' name='confirmPassword' class='confirmPassword' />
    <span></span>

    <label for='email'></label>
    <input type='email' data-count='2' placeholder='Email' name='email' class='email' />
    <span></span>

    <label for='url'></label>
    <input type='url' data-count='3' placeholder='Website' name='url' class='url' />
    <span></span>

    <input type='submit' id='submit' value='Submit' />
</form>

CSS:

代码语言:javascript
运行
复制
input {
    display: block;
    margin: 10px 0;
}

JavaScript:

代码语言:javascript
运行
复制
//url validation
function validateURL(url){
    var urlRegExp = /^(http|https):\/\/(([a-zA-Z0-9$\-_.+!*'(),;:&=]|%[0-9a-fA-F]{2})+@)?(((25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]|[1-9][0-9]|[0-9])(\.(25[0-5]|2[0-4][0-9]|[0-1][0-9][0-9]|[1-9][0-9]|[0-9])){3})|localhost|([a-zA-Z0-9\-\u00C0-\u017F]+\.)+([a-zA-Z]{2,}))(:[0-9]+)?(\/(([a-zA-Z0-9$\-_.+!*'(),;:@&=]|%[0-9a-fA-F]{2})*(\/([a-zA-Z0-9$\-_.+!*'(),;:@&=]|%[0-9a-fA-F]{2})*)*)?(\?([a-zA-Z0-9$\-_.+!*'(),;:@&=\/?]|%[0-9a-fA-F]{2})*)?(\#([a-zA-Z0-9$\-_.+!*'(),;:@&=\/?]|%[0-9a-fA-F]{2})*)?)?$/;
    return urlRegExp.test(url);
}

//email validation
function validateEmail(email){
    var pattern = /^(([^<>()[\]\\.,;:\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,}))$/;
    return pattern.test(email);
}

$('#submit').on('submit', function(e){
    var name = $.trim($('.fName').val()),
    password = $.trim($('.password').val()),
    confirmPassword = $.trim($('.confirmPassword').val()),
    email = $.trim($('.email').val()),
    url = $.trim($('.url').val());

    if (name === '' || password === '' || confirmPassword === '' || email === '' || url==='') {
        e.preventDefault();
    } else if($('.password').val() !== $('.confirmPassword').val()) {
        e.preventDefault();
    } else if(validateEmail($('.email').val() === false)){
        var el = validateEmail($('.email').val());
        console.log(el);
        e.preventDefault();
    } else if(validateURL($('.url').val() === false)){
        e.preventDefault();
    } else {
        console.log('bar');
        //$('.error-message').fadeIn('slow');
        e.preventDefault();
    }
});

JS Bin链接:http://jsbin.com/dimam/1/edit?html,css,js,console,output

EN

回答 1

Stack Overflow用户

发布于 2014-04-14 09:19:50

我已经完全改变了我的答案,来描述我在这里做了什么让它工作:

http://jsfiddle.net/HPLXg/38/

  1. 你在你的RegExp模式字符串的末尾有;。对于这些类型的字符串,这些不是必需的。
  2. 您在错误的DOM元素上绑定了submit。它需要绑定到表单而不是提交按钮上。
  3. 由于表单不会作为live内容动态添加到DOM中,因此您实际上不需要使用.on()函数,而只需使用.submit()函数。
  4. 我还在if语句中添加了其他一些小清理:
    • 使每个check都有自己的if语句,而不是<
    • >D16进程,这样每个字段都会被单独检查,并且所有错误都将同时显示。每次用户单击submit
    • changed if语句中的所有$(..).val()引用,以使用您已经在.submit()函数的变量声明区域中收集的变量,而不是每次都出现一个错误。如果不打算使用值,那么将值设为变量没有多大意义...
    • ,最后,在错误中添加了一些颜色,以指示哪些字段与rules

不符

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23050421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档