【发布时间】:2016-12-22 17:31:14
【问题描述】:
我正在尝试在提交之前验证我的表单。但是,我不明白为什么下面的 jQuery 验证不起作用! Fiddle here.
HTML
<input id="txtName" placeholder="Enter Name" />
<input id="txtEmail" placeholder="Enter Email" /></td>
<input id="txtPhone" placeholder="Enter Phone" /></td>
<input id="txtWebsite" placeholder="Enter Website" /></td>
<textarea id="txtContent" placeholder="Your text here.."></textarea>
<button id="btnSend">SEND</button>
我正在尝试验证电子邮件和 URL 的空输入字段和正则表达式验证。 jQuery
var txtName = $("#txtName");
var txtEmail = $("#txtEmail");
var txtPhone = $("#txtPhone");
var txtWebsite = $("#txtWebsite");
var txtContent = $("#txtContetnt");
var emailFilter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
var urlFilter = /((?:https?\:\/\/|www\.)(?:[-a-z0-9]+\.)*[-a-z0-9]+.*)/;
var phoneFilter = /^\d+$/;
$("#btnSend").click(function (evt) {
if (txtName.val() == "") {
txtName.animate({ backgroundColor: '#630000' }, 200, "easeInQuad");
evt.preventDefault();
}
if (txtEmail.val() == "") {
txtEmail.animate({ backgroundColor: '#630000' }, 200, "easeInQuad");
evt.preventDefault();
}
if (txtContent.val() == "") {
txtEmail.animate({ backgroundColor: '#630000' }, 200, "easeInQuad");
evt.preventDefault();
}
if (!phoneFilter.test(txtPhone.val())) {
txtEmail.animate({ backgroundColor: '#630000' }, 200, "easeInQuad");
evt.preventDefault();
}
if (!urlFilter.test(txtWebsite.val())) {
txtContent.animate({ backgroundColor: '#630000' }, 200, "easeInQuad");
evt.preventDefault();
}
if (!emailFilter.test(txtEmail.val())) {
txtEmail.animate({ backgroundColor: '#630000' }, 200, "easeInQuad");
evt.preventDefault();
}
});
【问题讨论】:
-
您在函数中指的是像
txtName这样的变量,但我看不出您在哪里初始化它们。 -
您应该删除重复的代码行,将它们放在一个函数中或结合您的
if条件,但不要重复相同的两行代码六次... -
您的电子邮件正则表达式也完全损坏了。考虑
/.+@.+\..+/。 -
@meagar 你能举个例子吗?
-
@MikeW 问题现已编辑..
标签: javascript jquery html asp.net regex