Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.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 - Fatal编程技术网

JavaScript:函数未运行

JavaScript:函数未运行,javascript,Javascript,我目前正在学习JavaScript并尝试验证一个简单的表单 我正在使用显示模块模式,并使用for循环检查表单提交上的输入字段是否为空 问题是validate函数没有启动,我在控制台中没有看到任何错误 此外,如果我的JS可以改进,请一定让我知道 JSFiddle HTML <form action="" method="post" name="frm" id="form"> <input id="fullname" placeholder="Name" name="in

我目前正在学习JavaScript并尝试验证一个简单的表单

我正在使用显示模块模式,并使用for循环检查表单提交上的输入字段是否为空

问题是validate函数没有启动,我在控制台中没有看到任何错误

此外,如果我的JS可以改进,请一定让我知道

JSFiddle

HTML

<form action="" method="post" name="frm" id="form">
    <input id="fullname" placeholder="Name" name="input">
    <input id="email" placeholder="Email" name="input">
    <input type="submit" id="submit">
</form>

JS

"use strict";

var signUp = (function() {

    var formSubmit = function() {
      var inputField = document.getElementsByTagName('input');
      document.forms['frm'].onsubmit = function(e) {
          alert('ello');
          val();
          e.preventDefault();
      }
    };

    function val() {
        var check = document.getElementsByName('input');
        var len = check.length;
        for(var i = 0; i < len; i++) {
            if(check[i].length === "") {
                alert('empty');
            }
        }
    };

    return {
      init: formSubmit
    }

})();

signUp.init();
“严格使用”;
var signUp=(函数(){
var formSubmit=函数(){
var inputField=document.getElementsByTagName('input');
document.forms['frm'].onsubmit=函数(e){
警惕(“ello”);
val();
e、 预防默认值();
}
};
函数val(){
var check=document.getElementsByName('input');
var len=检查长度;
对于(变量i=0;i
实际上正在调用val()函数,您的问题在于

编辑:。长度应为。innerHTML.length<1

见:

if(选中[i].innerHTML.length<1){
警报(“空”);
}
val
正在触发,如果您在开始时输入了
警报,您可以看到该警报

而不是

check[i].length
你应该

check[i].value

您的
val()
函数实际上正在运行。如果在
var len=check.length之后插入
警报(len)
它将发出警报2。问题在于
if(检查[i].length==“”){alert('empty');}
。。。您的条件是检查check[i]。length是否为空字符串。然后发出警报('empty')
,但由于这种情况从未发生过,因此警报从未发生过。您需要执行
检查[i]。value
而不是
检查[i]。length
此外,您可能还需要查看document.getElementById以替换对document.forms[name](可能还有document.getElementsByName('input')的使用,以便您能够区分它们)。元素ID在任何地方都可以工作,表单名称在旧的IE版本中有一些问题,在HTML4中被弃用。谢谢Greg。问题是他正在检查check[I]输入的长度是否为空字符串。。它应该是length==0或value==“”……正如我在上面的评论中所说,填充输入字段的
innerHTML
长度仍然是0。填充字段时,您的小提琴仍然会发出空警报。实际上.innerHTML.length<1会比valueWhy更好
value
专门用于读取字段的值,
innerHTML
是访问元素内容的常规方法。填充了值的输入字段在
innerHTML
中仍然没有任何内容。还想知道为什么innerHTML。值对我来说更有意义。(您可以通过填写字段并仍然得到空警报来自行验证)
check[i].value