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

时间:2017-11-03 05:07:23

标签: javascript jquery

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

我想说:

如果名称字段不是字母和空格,则显示此警告“...”。否则返回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>

4 个答案:

答案 0 :(得分:0)

z结束时遗失}script遗失;

并使用else if进行检查regex

&#13;
&#13;
only letter and space
&#13;
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;
  }
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您好可以使用正则表达式

&#13;
&#13;
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;
    }
}
&#13;
<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>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

使用typeof

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

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

答案 3 :(得分:0)

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

这个怎么样:

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