我是第一次海报和初学者程序员。我在这里有一些代码在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();
})();
答案 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事件?浏览器已经触发了这个事件,所以很明显你的函数永远不会被调用。