提交按钮不会使用IIFE重新启用

时间:2016-12-20 16:00:19

标签: javascript

我是第一次海报和初学者程序员。我在这里有一些代码在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();
})();

3 个答案:

答案 0 :(得分:1)

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

您需要将其映射到其他内容。 可能在输入变化?

答案 1 :(得分:1)

(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(); 
})();

我认为你之前有过这样的事情:

<input onchange="checkform">

这不再适用了,因为checkform不再是全局范围,它现在只通过闭包绑定...

答案 2 :(得分:0)

您正在将onload事件绑定到checkform函数,但是谁将触发onload事件?浏览器已经触发了这个事件,所以很明显你的函数永远不会被调用。