繁体   English   中英

JavaScript表单验证(仅检查所有字母)

[英]JavaScript form validation (check for all letters only)

我正在尝试创建一个函数,该函数将检查字段是否为空白,仅包含字母和空格。 验证该字段仅包含字母和空格似乎无法正常工作,因为该字段中放入的任何内容都会返回警报消息。

我想说:

如果名称字段不是字母和空格,则显示此警报“ ...”。 否则返回true。

 function validateForm() { var x = document.forms["newsletterForm"]["name"].value; if (x==null || x=="") { alert("Name must not be blank"); return false; } else if (x!==/^[A-Za-z ]+$/) { alert("Name contains invalid characters (letters and spaces only!)") return false; } else { return true; } 
  <form name="newsletterForm" action="#" onsubmit="return validateForm()" method="post"> <label for="name">Name*: </label><br> <input type="text" name="name" placeholder="Fill in your name"1> <br><br> <label for="email">E-mail*: </label><br> <input type="text" name="email" placeholder="Fill in your e-mail address"><br><br> <label for="comments">Comments (optional): </label> <br> <textarea rows="5" cols="20" name="comments" placeholder="Leave us a message"></textarea><br> <input type="submit" value="Submit"> </form> 

缺少}在端script和失踪; else if

并使用regex only letter and space检查only letter and space

 function validateForm() { var regex = new RegExp("^[a-zA-Z ]+$"); var x = document.forms["newsletterForm"]["name"].value; if (x == null || x == "") { alert("Name must not be blank"); return false; } else if (!regex.test(x)) { alert("Name contains invalid characters (letters and spaces only!)"); return false; } else { return true; } } 
 <form name="newsletterForm" action="#" onsubmit="return validateForm()" method="post"> <label for="name">Name*: </label><br> <input type="text" name="name" placeholder="Fill in your name"> <br><br> <label for="email">E-mail*: </label><br> <input type="text" name="email" placeholder="Fill in your e-mail address"><br><br> <label for="comments">Comments (optional): </label> <br> <textarea rows="5" cols="20" name="comments" placeholder="Leave us a message"></textarea><br> <input type="submit" value="Submit"> </form> 

嗨,您可以使用正则表达式

 var regexExp = /^[a-zA-Z\\s]*$/; function validateForm() { var x = document.forms["newsletterForm"]["name"].value; alert(x) if (x==null || x=="") { alert("Name must not be blank"); return false; } else if (!regexExp.test(x)) { alert("Name contains invalid characters (letters and spaces only!)") return false; } } 
 <form name="newsletterForm" action="#" onsubmit="return validateForm()" method="post"> <label for="name">Name*: </label><br> <input type="text" name="name" placeholder="Fill in your name"1> <br><br> <label for="email">E-mail*: </label><br> <input type="text" name="email" placeholder="Fill in your e-mail address"><br><br> <label for="comments">Comments (optional): </label> <br> <textarea rows="5" cols="20" name="comments" placeholder="Leave us a message"></textarea><br> <input type="submit" value="Submit"> </form> 

使用typeof

尝试

if(x == null || typeof x !== 'string')
{
   //code here
}

空字符串不是要检查的有效值。

我认为问题是您对!==的使用。 !==会寻找x与您的正则表达式对象之间的绝对匹配-也就是说, x是该正则表达式对象; 该表达式不匹配

那这个呢:

else if (! /^[A-Za-z ]+$/.test(x))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM