2013-02-08 33 views
-1

我正在尝试在表单上工作。目前,该按钮被禁用。但是当你点击一个复选框时,该按钮应该被启用,然后再次禁用,如果你没有点击复选框。当我点击一个复选框时,我不能让按钮变为启用状态。可能我的循环出了问题。该循环在函数checkAge中。任何解决方案启用和禁用按钮不起作用

的Javascript

function checkAge(e){ 

var theTarget = e.target ? e.target : e.srcElement; 
alert(theTarget.id); 

var form = document.getElementById("form"); 
if (document.getElementById("content")) { 
    form.removeChild(document.getElementById("content")); 
} 

if(theTarget.id == "fourteen"){ 
    var newDiv = document.createElement("div"); 
    newDiv.setAttribute("id", "content"); 

    var br = document.createElement("br"); 
    newDiv.appendChild(br); 
    var br = document.createElement("br"); 
    newDiv.appendChild(br); 

    newDiv.appendChild(document.createTextNode("Vilka seriefigurer träffade du?")); 

    var br = document.createElement("br"); 
    newDiv.appendChild(br); 

    var musse = document.createElement('input'); 
    musse.setAttribute("type", "checkbox"); 
    musse.setAttribute("name", "musse"); 
    musse.setAttribute("value", "musse"); 
    musse.setAttribute("id", "musse"); 
    newDiv.appendChild(musse); 
    newDiv.appendChild(document.createTextNode("Musse")); 

    var br = document.createElement("br"); 
    newDiv.appendChild(br); 

    var adi = document.createElement('input'); 
    adi.setAttribute("type", "checkbox"); 
    adi.setAttribute("name", "adi"); 
    adi.setAttribute("value", "adi"); 
    adi.setAttribute("id", "adi"); 
    newDiv.appendChild(adi); 
    newDiv.appendChild(document.createTextNode("Ådi")); 

    var br = document.createElement("br"); 
    newDiv.appendChild(br); 

    var bamse = document.createElement('input'); 
    bamse.setAttribute("type", "checkbox"); 
    bamse.setAttribute("name", "bamse"); 
    bamse.setAttribute("value", "bamse"); 
    bamse.setAttribute("id", "bamse"); 
    newDiv.appendChild(bamse); 
    newDiv.appendChild(document.createTextNode("Bamse")); 

    var br = document.createElement("br"); 
    newDiv.appendChild(br); 

    var input = document.createElement("input"); 
    input.setAttribute("type", "submit"); 
    input.setAttribute("name", "submit"); 
    input.setAttribute("id", "submit"); 
    input.setAttribute("value", "Skicka"); 
    newDiv.appendChild(input); 

    form.appendChild(newDiv); 

    var inputs = document.getElementsByTagName("input"); 
    for(i=0; i<inputs.length; i++){ 
     input.disabled = true; 
     if(inputs[i].type == "checkbox" && inputs[i].checked){ 
      input.disabled = false; 
     } 
     else{ 
      input.disabled = true; 
     } 

    } 

} 
+1

你真的不能将问题缩小到少于200行的代码? – 2013-02-08 18:45:07

+0

对不起,不想错过解决问题的任何关键代码。 – DrWooolie 2013-02-08 18:48:26

+0

忽略checkAge功能。 – DrWooolie 2013-02-08 18:49:23

回答

2

当您创建的复选框,你不重视他们的任何事件。只有当您创建表单的checkAge部分时,您的循环才会禁用输入,并且不会再次执行。如果您连接到复选框,那么它应该解决您的问题。

另外,您的checkAge功能会将复选框输入添加到文档中,但您绝不会更新inputs数组以包含复选框。

您可能需要考虑先将所有HTML元素添加到页面中,然后使用display:none/display:block来隐藏/显示元素。

+0

谢谢你的帮助! – DrWooolie 2013-02-08 20:22:35