如何使用jquery.validate.min.js验证电话号码和电子邮件?

问题描述:

我已经设法修改了一个jQuery表单验证示例来处理我的网站,但我不知道如何确保它只是在电话号码字段中输入的数字,并且只是在电子邮件字段中输入的电子邮件地址。如何使用jquery.validate.min.js验证电话号码和电子邮件?

请任何人都可以帮忙吗?

也想知道是否有什么可以改善?

<script language="javascript" type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.min.js"></script> 
<script> 
$(function() { 
    $("#quickform").validate({ 
      rules: { 
        name: { 
         required: true 
        }, 
        phone: { 
         required: true, 
         phonevalidation: true 
        }, 
        email: { 
         required: true, 
         emailvalidation: true 
        }, 
        enquiry: { 
         required: true 
        } 

      }, 
      messages: { 
        name: { 
         required: "Please enter your name."       
        }, 
        phone: { 
         required: "Please enter your phone number."       
        }, 
        email: { 
         required: "Please enter your email address."       
        }, 
        enquiry: { 
         required: "Please enter your enquiry."       
        } 
      }, 
    }); 
    $.validator.addMethod("phonevalidation", 
      function(value, element) { 
        return /^[A-Za-z\d=#$%@_ -]+$/.test(value); 
      }, 
    "Please enter a valid phone number." 
    ); 
    $.validator.addMethod("emailvalidation", 
      function(value, element) { 
        return /^[A-Za-z\d=#$%@_ -]+$/.test(value); 
      }, 
    "Please enter a valid email address." 
    ); 
}); 
</script> 

编辑:

已经有很多的例子验证方法,但它是不接受特殊字符。我只需要了解如何将/^[A-Za-z \ d =#$%@ _ - ] + $ /更改为电子邮件和数字验证。

+2

“我不知道如何确保它在进入只是数字电话号码字段“ - 不要。相反,让人们格式化他们的电话号码。您可以在服务器上删除格式化字符。 – Quentin 2013-04-30 11:38:15

+0

感谢您的回复。对不起,我应该更清楚。该示例中已经有验证方法,但不接受特殊字符。我只需要了解如何将/^[A-Za-z \ d =#$%@ _ - ] + $ /更改为电子邮件和数字验证。 – Chris 2013-04-30 11:49:17

有已经存在于验证框架emailphone规则

<script language="javascript" type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.10.0/jquery.validate.min.js"></script> 
<script language="javascript" type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/additional-methods.js"></script> 
<script> 
$(function() { 
    $("#quickform").validate({ 
     rules: { 
      name: { 
       required: true 
      }, 
      phone: { 
       required: true, 
       phoneUK: true //or look at the additional-methods.js to see available phone validations 
      }, 
      email: { 
       required: true, 
       email: true 
      }, 
      enquiry: { 
       required: true 
      } 

     }, 
     messages: { 
      name: { 
       required: "Please enter your name."       
      }, 
      phone: { 
       required: "Please enter your phone number."       
      }, 
      email: { 
       required: "Please enter your email address."       
      }, 
      enquiry: { 
       required: "Please enter your enquiry."       
      } 
     }, 
    }); 

}); 
</script> 
+0

将是很好的注意到我们假定你是美国的电话号码... – excentris 2013-04-30 11:56:13

+0

@netrunner我和它一起 – 2013-04-30 11:57:10

+0

添加备注,这是伟大的!我现在使用您的示例来获取电子邮件地址,并使用上面的答案进行英国电话号码验证。谢谢! – Chris 2013-04-30 12:00:29

我建议建立一个正则表达式和匹配到了用户输入,并使用匹配()函数。

有关如何构建正确的正则表达式的详细信息(根据您所在地区)去RegExp tutorial

+0

感谢您的回复。对不起,我应该更清楚。该示例中已经有验证方法,但不接受特殊字符。我只需要了解如何将/^[A-Za-z \ d =#$%@ _ - ] + $ /更改为电子邮件和数字验证。 – Chris 2013-04-30 11:49:59

我有英国的电话号码验证

jQuery.validator.addMethod('phoneUK', function(phone_number, element) { 
         phone_number = phone_number.replace(/\s+/g, ''); 
         return this.optional(element) || phone_number.match(/^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$/); 
        }, 'Please specify a valid phone number'); 


        $('#inputTelephone').rules('add', { 
         required: true, 
         phoneUK: true 
        }); 
+0

完美!我并不希望验证它,所以它只接受英国格式的电话号码:-) – Chris 2013-04-30 11:59:19

+0

实际上,经过进一步测试后,它无法正常工作。惯于接受我的标准0121座机号码带或不带空格: -/ – Chris 2013-04-30 12:06:07