"不相等”;在Javascript表单验证中无法识别符号
"Not Equal" sign not recognised in Javascript Form Validation
有人能告诉我如何改进这个代码吗?最重要的是,对我的电子邮件验证进行排序,使其在Z不等于零或字符串"电子邮件"的所有情况下都能工作
所有字段都以适当的措辞开头,这些措辞已作为示例输入给客户。
提前致以亲切的问候。
function validateForm()
{
//Uses HTML field IDs
var x=document.forms["myForm"]["name"].value;
var y=document.forms["myForm"]["phone"].value;
var z=document.forms["myForm"]["email"].value;
//Name locator
if (x==null || x=="" || x=="Name")
{
alert("Please enter the your name.");
return false;
}
//Contact method locator
if ((y==null || y=="" || y=="Phone Number")&&(z==null || z=="" || z=="Email"))
{
alert("Please enter a contact method.");
return false;
}
//Phone numeric validation, this runs if Email field is not edited
if (z==null || z=="" || z=="Email")
{
if (isNaN(y)||x.indexOf(" ")!=-1)
{
alert("Telephone must be a numeric value.");
return false;
}
}
//Phone length validation, this runs if Email field is not edited
if (z==null || z=="" || z=="Email")
{
if (y.length > 14)
{
alert("Telephone must be valid.");
return false;
}
}
//Email validation, does not work, this should run only when something is entered into the field
if (z!=null || z!="" || z!="Email")
{
var atpos=z.indexOf("@");
var dotpos=z.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=z.length)
{
alert("This is not a valid e-mail address");
return false;
}
}
}
您可以做一些事情。
z==null || z==""
可用!Boolean(z)
或!z
代替
z!=null || z!=""
可用Boolean(z)
或!!z
代替
您还应该尝试始终使用===而不是===,除非您期望的类型强制。
因此,您对z == "Email"
的检查可能会更改为类似于z.toLowerCase() === "email"
的内容
看起来您还重复了代码-->z==null || z=="" || z=="Email"
(x2)。您可以将电话号码验证和电话长度验证相结合。
看看这个验证代码,它是jQuery和Javascript的组合。它将为您提供一些关于您应该寻找什么以及如何处理典型表单的特定元素的极好见解(包括GREAT RegEx电子邮件地址示例:
/^((([a-z]|'d|[!#'$%&''*'+'-'/='?'^_`{'|}~]|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])+('.([a-z]|'d|[!#'$%&''*'+'-'/='?'^_`{'|}~]|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])+)*)|(('x22)(((('x20|'x09)*('x0d'x0a))?('x20|'x09)+)?((['x01-'x08'x0b'x0c'x0e-'x1f'x7f]|'x21|['x23-'x5b]|['x5d-'x7e]|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])|(''(['x01-'x09'x0b'x0c'x0d-'x7f]|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF]))))*((('x20|'x09)*('x0d'x0a))?('x20|'x09)+)?('x22)))@((([a-z]|'d|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])|(([a-z]|'d|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])([a-z]|'d|-|'.|_|~|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])*([a-z]|'d|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])))'.)+(([a-z]|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])|(([a-z]|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])([a-z]|'d|-|'.|_|~|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])*([a-z]|['u00A0-'uD7FF'uF900-'uFDCF'uFDF0-'uFFEF])))$/i.test(value)
更改:
if (z!=null || z!="" || z!="Email")
对此:
if (z!=null && z!="" && z!="Email")
你的验证应该都是AND和OR,因为你希望在提交之前所有这些都是真的。
您是否考虑过使用validate.js之类的东西,而不是手动编写表单验证?
示例代码:
var validator = new FormValidator('example_form', [{
name: 'req',
display: 'required',
rules: 'required'
}, {
name: 'alphanumeric',
rules: 'alpha_numeric'
}, {
name: 'password',
rules: 'required'
}, {
name: 'password_confirm',
display: 'password confirmation',
rules: 'required|matches[password]'
}, {
name: 'email',
rules: 'valid_email'
}, {
name: 'minlength',
display: 'min length',
rules: 'min_length[8]'
}], function(errors, event) {
if (errors.length > 0) {
// Show the errors
}
});
相关文章:
- 如何识别我的网站中的慢速设备
- Google/html5语音识别JavaScript SDK Chrome网络工具包SpeechRecognition
- 在.csv文件中写入学位符号
- AngularJS指令只识别双向绑定类型
- 使用相同的数据集绘制各种符号
- php脚本中无法识别ajax传递的值
- 将带点符号的属性(有时)传递给函数
- RegEx JavaScript:数字后的符号提取
- 识别没有ID或特定属性的对象
- JavaScript无法识别图像
- 如何在计算器符号为零时替换它
- 识别由不同数量的项组成的json对象
- 无法识别从php创建的Js函数
- 错误:语法错误,无法识别的表达式:不支持的伪:无效/RectJS/Unit Testing
- 删除输入中输入的符号
- 如何在ReactJs中渲染重音符号
- "不相等”;在Javascript表单验证中无法识别符号
- 当表单元素包含带有一些特殊符号的id时,jQuery验证器会出错'无法识别的表达式'
- Rhino脚本引擎是否无法识别$符号
- 如何识别和删除文本中的任何类型的项目符号