Javascript 提交按钮不存在';无法使用iLife重新启用

Javascript 提交按钮不存在';无法使用iLife重新启用,javascript,Javascript,我是一个第一次海报和初学者程序员。我这里有一些代码在IIFE之外工作,但当我把它放在IIFE中时,会破坏提交函数。我正在做的是制作一个简单的联系人表单,禁用提交按钮,直到所有字段中至少有1个字符。在这一点上,我对Javascript/jQuery的了解还不够长,无法对代码进行重构以使其正常工作。我很确定有一个简单的答案,我只是还没看到。提前感谢 JavaScript (function() { function init() { window.onload = chec

我是一个第一次海报和初学者程序员。我这里有一些代码在IIFE之外工作,但当我把它放在IIFE中时,会破坏提交函数。我正在做的是制作一个简单的联系人表单,禁用提交按钮,直到所有字段中至少有1个字符。在这一点上,我对Javascript/jQuery的了解还不够长,无法对代码进行重构以使其正常工作。我很确定有一个简单的答案,我只是还没看到。提前感谢

JavaScript

(function() {

    function init() {
        window.onload = checkform;
    }

    function checkform() {

        var validateBeforeSubmit = document.forms["contactForm"].elements;
        var cansubmit = true;

        for (var i = 0; i < validateBeforeSubmit.length; i++) {
            if (validateBeforeSubmit[i].value.length == 0)
                cansubmit = false;
        }
        document.getElementById('submitButton').disabled = !cansubmit;
    }
    init();
})();
(函数(){
函数init(){
window.onload=checkform;
}
函数检查表(){
var validatebeforsubmit=document.forms[“contactForm”].elements;
var cansubmit=true;
for(var i=0;i
您正在将您的checkform功能分配给onload事件。当页面加载时,它只运行一次

你需要把它映射到其他东西。
可能是因为输入的改变

您正在将您的checkform函数分配给onload事件。当页面加载时,它只运行一次

你需要把它映射到其他东西。
可能是因为输入的改变

您正在将onload事件绑定到checkform函数,但是谁将触发onload事件??浏览器已触发此事件,因此显然您的函数永远不会被调用。

您正在将onload事件绑定到checkform函数,但谁将触发onload事件??浏览器已触发此事件,因此显然您的函数永远不会被调用。

(function(){
(function() { 
function init() { 
window.onload = checkform; 
} 
function checkform() { 
var validateBeforeSubmit = document.forms["contactForm"].elements;
 var cansubmit = true;
 for (var i = 0; i < validateBeforeSubmit.length; i++) {
       if (validateBeforeSubmit[i].value.length == 0) cansubmit = false; 
       validateBeforeSubmit[i].oninput=checkform;//the line you need
}    
 document.getElementById('submitButton').disabled = !cansubmit; 
} 
init(); 
})();
函数init(){ window.onload=checkform; } 函数checkform(){ var validatebeforsubmit=document.forms[“contactForm”].elements; var cansubmit=true; for(var i=0;i
我想你以前有过这样的经历:

<input onchange="checkform">

这将不再有效,因为checkform不再在全局范围内,它现在只通过闭包绑定…

(function(){
函数init(){
window.onload=checkform;
} 
函数checkform(){
var validatebeforsubmit=document.forms[“contactForm”].elements;
var cansubmit=true;
for(var i=0;i
我想你以前有过这样的经历:

<input onchange="checkform">


这将不再有效,因为checkform不再在全局范围内,它现在只通过闭包绑定…

这在填写所有字段并单击最后一个填写的字段后解决了问题。是否有一种方法可以在字段中有字符时立即启用提交,而不是先单击它?这解决了在填写所有字段并单击最后一个填写的字段后的问题。是否有一种方法可以在字段中有字符时立即启用提交,而不是首先单击它?对,因此我需要再次调用它来检查所有字段,对吗?没有。基兰的说法可能是错误的。iife执行得非常快,它应该在启动之前绑定onload…对,所以我需要再次调用它来检查所有字段,对吗?不。基兰的说法可能是错误的。iife执行得非常快,它应该在启动前绑定onload。。。