嘿我试图验证我的表单如果使用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>
答案 0 :(得分:1)
当你有这个:
if(info.namex.value==" ")
// -------------------^--
您不检查字符串是否为空。您检查它是否只有一个空格字符。两个引号之间的空白区域是一个字符,您的检查需要输入才能获得它。您检查用户是否一次按下了空格键。要检查空字符串,您应该这样做:
if(info.namex.value=="")
但是,您也可以这样写:
if(!info.namex.value)
当if
为假时,这将进入info.namex.value
代码块。虚假值为0
,undefined
,null
为空字符串 ""
等等。详细了解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>