【问题标题】:JavaScript form validation (check for all letters only)JavaScript 表单验证(仅检查所有字母)
【发布时间】:2017-11-03 05:07:22
【问题描述】:

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

我想说:

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

【问题讨论】:

标签: javascript jquery


【解决方案1】:

script 末尾缺少},在else if 缺少;

并使用regex 检查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>

【讨论】:

  • 非常感谢!
【解决方案2】:

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

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>

【讨论】:

    【解决方案3】:

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

    这个呢:

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

    【讨论】:

      【解决方案4】:

      使用typeof

      试试

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

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

      【讨论】:

      • 感谢您告诉我,我也会更改。
      猜你喜欢
      • 1970-01-01
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 2017-02-26
      • 1970-01-01
      相关资源
      最近更新 更多