Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript进行简单表单验证_Javascript_Html_Forms - Fatal编程技术网

使用javascript进行简单表单验证

使用javascript进行简单表单验证,javascript,html,forms,Javascript,Html,Forms,我正在尝试创建一个简单的HTML表单&我想使用javascript验证这些值。 以下是表格: <form action="" onSubmit="return formValidation();" method="Post" name="form"> &以下是textValidation()代码: function textValidation(txt, mn, mx) { var txtlen = txt.value.length; if (textlen =

我正在尝试创建一个简单的HTML表单&我想使用javascript验证这些值。
以下是表格:

<form action="" onSubmit="return formValidation();" method="Post" name="form">
&以下是
textValidation()
代码:

function textValidation(txt, mn, mx) {
     var txtlen = txt.value.length;
     if (textlen == 0 || txtlen <=mn || txtlen > mx ) {
           document.getElementById('error').innerHTML = '<h6 style="color: red;">text is invalid</h6>';
            return false;
            }
      return true;
}
函数文本验证(txt、mn、mx){
var txtlen=txt.value.length;
if(textlen==0 | | txtlen mx){
document.getElementById('error')。innerHTML='text is invalid';
返回false;
}
返回true;
}
问题是,当我输入无效文本时,它会显示错误,但再次点击提交按钮无效,即使我更改了文本。
我使用了
alert()
&效果很好。

我做错了什么?

无论条件语句的结果如何,您的函数
formValidation()
总是返回false

考虑您的代码,并以某些方式更正:

function formValidation() {
   var mytext=document.form.text;
   if (textValidation(mytext, 3, 20)) {

   }
   return false;
}
如果函数
textValidation(mytext,3,20)
为false,
formValidation()
返回false。如果
textValidation(mytext,3,20)
为真,那么。。。执行
if
语句的主体,该主体为空,然后formValidation返回false


此外,代码中还存在许多不匹配的括号和其他与语法相关的问题。由于Javascript天生就是灵活的,所以在实践中您可能会错过这些东西。我建议使用来验证和改进Javascript代码的总体质量和设计。

无论条件语句的结果如何,函数
formValidation()
总是会返回false

考虑您的代码,并以某些方式更正:

function formValidation() {
   var mytext=document.form.text;
   if (textValidation(mytext, 3, 20)) {

   }
   return false;
}
如果函数
textValidation(mytext,3,20)
为false,
formValidation()
返回false。如果
textValidation(mytext,3,20)
为真,那么。。。执行
if
语句的主体,该主体为空,然后formValidation返回false


此外,代码中还存在许多不匹配的括号和其他与语法相关的问题。由于Javascript天生就是灵活的,所以在实践中您可能会错过这些东西。我建议使用来验证和改进Javascript代码的总体质量和设计。

您正在设置错误文本,但您没有清除它,因此它会一直存在。此外,必须在formValidation函数的if语句中返回true,否则它将始终返回false

您可以如下方式清除消息:

function textValidation(txt, mn, mx) {
  var txtlen = txt.value.length;
  if (textlen == 0 || txtlen <=mn || txtlen > mx ) {
    document.getElementById('error').innerHTML = '<h6 style="color: red;">text is invalid</h6>';
    return false;
  }
  document.getElementById('error').innerHTML = "";
  return true;
}
function formValidation() {
  var mytext=document.form.text;
  if (textValidation(mytext, 3, 20)) {
    return true;
  }
  return false;
}

您正在设置错误文本,但您没有清除它,因此它只是停留在周围。此外,必须在formValidation函数的if语句中返回true,否则它将始终返回false

您可以如下方式清除消息:

function textValidation(txt, mn, mx) {
  var txtlen = txt.value.length;
  if (textlen == 0 || txtlen <=mn || txtlen > mx ) {
    document.getElementById('error').innerHTML = '<h6 style="color: red;">text is invalid</h6>';
    return false;
  }
  document.getElementById('error').innerHTML = "";
  return true;
}
function formValidation() {
  var mytext=document.form.text;
  if (textValidation(mytext, 3, 20)) {
    return true;
  }
  return false;
}

您可以这样编写表单验证函数

function formValidation() {
var mytext=document.form.text;
//if the variable boolval is initialized inside double quotes it is string now it is bool variable
var boolval=false; 
if (textValidation(mytext, 3, 20)) {
boolval=true;
}
return boolval;
}

如果textvalidation为true,则它将初始化true为boolval,或者此函数将返回boolval false,就像我们之前初始化的一样[这是默认值]

您可以这样编写表单验证函数

function formValidation() {
var mytext=document.form.text;
//if the variable boolval is initialized inside double quotes it is string now it is bool variable
var boolval=false; 
if (textValidation(mytext, 3, 20)) {
boolval=true;
}
return boolval;
}

如果textvalidation为true,则它将初始化true为boolval,或者此函数将返回boolval false,就像我们之前初始化的一样[这是默认值]

控制台中出现任何错误??您希望发生什么?您没有else语句来删除错误,并且表单验证函数中的return false在表单没有错误时停止过程errors@GrahamT在何处以及如何放置else语句?您能在回答中解释更多吗?控制台中有错误吗?您希望发生什么?您没有else语句来删除错误,并且表单验证函数中的return false在表单没有错误时停止过程errors@GrahamT在何处以及如何放置else语句?你能在回答中解释更多吗?这是怎么做到的?你能纠正我的代码并把它给我看,这样我就能理解了吗?这是怎么做到的?你能纠正我的代码并把它给我看,这样我就可以理解了吗?我应该在
if
语句的主体中放些什么呢?
function formValidation(){var mytext=document.form.text;return textValidation(mytext,3,20);}
@analytalica提出了一个很好的观点,如果您想扩展到包含其他验证函数,那么它实际上有助于保持内容的简洁性,在这种情况下,您可以只使用&&其他函数。也就是说,
function formValidation(){var mytext=document.form.text;return textValidation(mytext,3,20)和&otherValidation(otherInput)&&&&;}
if语句的主体应该放些什么呢?
function formValidation(){var mytext=document.form.text;return textValidation(mytext,3,20);}
@analytalica提出了一个很好的观点,如果您想扩展到包含其他验证函数,那么它实际上有助于保持内容的简洁性,在这种情况下,您可以只使用&&其他函数。例如,
function formValidation(){var mytext=document.form.text;return textValidation(mytext,3,20)和&otherValidation(otherInput)&&&……}