无法运行验证

时间:2018-05-11 06:15:06

标签: javascript forms validation

嘿我试图验证我的表单如果使用javascript输入空白,我确实知道使用HTML的require关键字,但我真的想弄清楚我写的代码有什么问题?

<html>
<body>
  <script> function x (info) {
  if(info.namex.value==" " || info.namex.value == "null")
  {
    alert ("Check again");
    return false;
  }
}
</script>
<form method = "post" name = "a" onsubmit = "return x(this)">
  <input type = "text" name = "namex">
  <input type = "submit" value = "submit">
  </form>
  </body>
  </html> 

4 个答案:

答案 0 :(得分:1)

当你有这个:

if(info.namex.value==" ")
// -------------------^--

您不检查字符串是否为空。您检查它是否只有一个空格字符。两个引号之间的空白区域是一个字符,您的检查需要输入才能获得它。您检查用户是否一次按下了空格键。要检查空字符串,您应该这样做:

if(info.namex.value=="")

但是,您也可以这样写:

if(!info.namex.value)

if为假时,这将进入info.namex.value代码块。虚假值为0undefinednull 为空字符串 ""等等。详细了解here

另外,正如Krzysztof Janiszewski所说,你必须从null删除引号。如果您将其放在引号中,则不会与 null进行比较,而是与内容为“null”的字符串进行比较。 I.E.检查用户是否在输入字段中键入“null”。

null:原始值null
"null":内容为“n”,“u”,“l”和“l”的字符串

详细了解null here

您可能需要的是以下内容:

<html>

<body>
  <script>
    function x(info) {
      if (!info.namex.value.match(/\S/)) {
        alert("Check again");
        return false;
      }
    }
  </script>
  <form method="post" name="a" onsubmit="return x(this)">
    <input type="text" name="namex">
    <input type="submit" value="submit">
  </form>
</body>

</html>

在这一行:

!info.namex.value.match(/\S/)

这是正则表达式/\S/,它将匹配任何非空格字符。如果输入中只有非空白字符,则会显示警报。这意味着任何空白组合都无法实现。如果您有" "" " - 这只是空格而不是任何合法输入。你可能不希望这样。如果字符串为空"",则仍然没有非空格字符,因此仍会显示警报。

通过检查的唯一方法是输入中的任何位置都有“可见”符号。如果你只有空格,制表符,换行符 - 那些是空格。您的支票至少需要一个字母,数字,符号 - 任何这些空白字符。

详细了解正则表达式here

答案 1 :(得分:0)

您的function还没有完整的验证/条件,可能会出错,因为您正在检查empty namex字段中有2个条件,其中一个是&# 34; &#34; [空间]。

如果您对jquery没问题,我建议使用jqueryValidation,它很容易使用且具有完整的验证集

答案 2 :(得分:0)

如果你想检查输入是否为空,那么我建议你这样做:

const x = (info) => {
  if (!info.namex.value.trim().length) {
    alert ("Check again");

    return false;
  }
}

答案 3 :(得分:0)

首先,如果您想检查变量是否等于null,请不要使用任何类型的引号包围null

其次,如果检查变量是否为空字符串,请不要在双引号""

中添加空格

除此之外,您的代码还可以。

以下是一个工作示例

function x(info) {
  if (info.namex.value == "" || info.namex.value == null) {
    alert("Check again");
    return false;
  }
}
<form method="post" name="a" onsubmit="return x(this)">
  <input type="text" name="namex">
  <input type="submit" value="submit">
</form>