2014-01-06 47 views
0

請看網址:http://www.supereleman.com/test/2.html圖片複選框列表中無法正常工作

當我點擊文本,複選框被選中。但是(相反)當點擊圖像,文字和圖像沒有被點擊。

當點擊圖像時必須做什麼,複選框被選中?

我的代碼;

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script src="custom-form-elements.js"></script> 

<style> 
.multiselect { 
width:10em; 
height:5em; 
border:solid 1px #c0c0c0; 
overflow:auto; 
} 

.multiselect label { 
display:block; 
} 

.multiselect-on { 
color:#ffffff; 
background-color:#3399ff; 
} 
</style> 
<link href="form.css" rel="stylesheet" type="text/css" /> 

<script> 
jQuery.fn.multiselect = function() { 
$(this).each(function() { 
    var checkboxes = $(this).find("input:checkbox"); 
    checkboxes.each(function() { 
     var checkbox = $(this); 
     // Highlight pre-selected checkboxes 
     if (checkbox.attr("checked")) 
      checkbox.parent().addClass("multiselect-on"); 

     // Highlight checkboxes that the user selects 
     checkbox.click(function() { 
      if (checkbox.attr("checked")) 
       checkbox.parent().addClass("multiselect-on"); 
      else 
       checkbox.parent().removeClass("multiselect-on"); 
     }); 
    }); 
}); 
}; 

$(function() { 
$(".multiselect").multiselect(); 
}); 


</script> 


<style> 

label 
{ 
line-height:25px; 
} 

</style> 




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body><div class="multiselect"> 
<label><input type="checkbox" name="option[]" value="1" class="styled" />Green</label> 
<label><input type="checkbox" name="option[]" value="2" class="styled"/>Red</label> 
<label><input type="checkbox" name="option[]" value="3" class="styled"/>Blue</label> 
<label><input type="checkbox" name="option[]" value="4" class="styled"/>Orange</label> 
<label><input type="checkbox" name="option[]" value="5" class="styled"/>Purple</label> 
<label><input type="checkbox" name="option[]" value="6" class="styled"/>Black</label> 
<label><input type="checkbox" name="option[]" value="7" class="styled"/>White</label> 
</div> 
</body> 
</html> 

自定義表單elements.js

   var checkboxHeight = "25"; 
      var radioHeight = "25"; 
      var selectWidth = "190"; 


      /* No need to change anything after this */ 


      document.write('<style type="text/css">input.styled { display: none; } select.styled { position: relative; width: ' + selectWidth + 'px; opacity: 0; filter: alpha(opacity=0); z-index: 5; } .disabled { opacity: 0.5; filter: alpha(opacity=50); }</style>'); 

      var Custom = { 
       init: function() { 
        var inputs = document.getElementsByTagName("input"), span = Array(), textnode, option, active; 
        for(a = 0; a < inputs.length; a++) { 
         if((inputs[a].type == "checkbox" || inputs[a].type == "radio") && inputs[a].className.indexOf("styled") > -1) { 
          span[a] = document.createElement("span"); 
          span[a].className = inputs[a].type; 

          if(inputs[a].checked == true) { 
           if(inputs[a].type == "checkbox") { 
            position = "0 -" + (checkboxHeight*2) + "px"; 
            span[a].style.backgroundPosition = position; 
           } else { 
            position = "0 -" + (radioHeight*2) + "px"; 
            span[a].style.backgroundPosition = position; 
           } 
          } 
          inputs[a].parentNode.insertBefore(span[a], inputs[a]); 
          inputs[a].onchange = Custom.clear; 
          if(!inputs[a].getAttribute("disabled")) { 
           span[a].onmousedown = Custom.pushed; 
           span[a].onmouseup = Custom.check; 
          } else { 
           span[a].className = span[a].className += " disabled"; 
          } 
         } 
        } 
        inputs = document.getElementsByTagName("select"); 
        for(a = 0; a < inputs.length; a++) { 
         if(inputs[a].className.indexOf("styled") > -1) { 
          option = inputs[a].getElementsByTagName("option"); 
          active = option[0].childNodes[0].nodeValue; 
          textnode = document.createTextNode(active); 
          for(b = 0; b < option.length; b++) { 
           if(option[b].selected == true) { 
            textnode = document.createTextNode(option[b].childNodes[0].nodeValue); 
           } 
          } 
          span[a] = document.createElement("span"); 
          span[a].className = "select"; 
          span[a].id = "select" + inputs[a].name; 
          span[a].appendChild(textnode); 
          inputs[a].parentNode.insertBefore(span[a], inputs[a]); 
          if(!inputs[a].getAttribute("disabled")) { 
           inputs[a].onchange = Custom.choose; 
          } else { 
           inputs[a].previousSibling.className = inputs[a].previousSibling.className += " disabled"; 
          } 
         } 
        } 
        document.onmouseup = Custom.clear; 
       }, 
       pushed: function() { 
        element = this.nextSibling; 
        if(element.checked == true && element.type == "checkbox") { 
         this.style.backgroundPosition = "0 -" + checkboxHeight*3 + "px"; 
        } else if(element.checked == true && element.type == "radio") { 
         this.style.backgroundPosition = "0 -" + radioHeight*3 + "px"; 
        } else if(element.checked != true && element.type == "checkbox") { 
         this.style.backgroundPosition = "0 -" + checkboxHeight + "px"; 
        } else { 
         this.style.backgroundPosition = "0 -" + radioHeight + "px"; 
        } 
       }, 
       check: function() { 
        element = this.nextSibling; 
        if(element.checked == true && element.type == "checkbox") { 
         this.style.backgroundPosition = "0 0"; 
         element.checked = false; 
        } else { 
         if(element.type == "checkbox") { 
          this.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px"; 
         } else { 
          this.style.backgroundPosition = "0 -" + radioHeight*2 + "px"; 
          group = this.nextSibling.name; 
          inputs = document.getElementsByTagName("input"); 
          for(a = 0; a < inputs.length; a++) { 
           if(inputs[a].name == group && inputs[a] != this.nextSibling) { 
            inputs[a].previousSibling.style.backgroundPosition = "0 0"; 
           } 
          } 
         } 
         element.checked = true; 
        } 
       }, 
       clear: function() { 
        inputs = document.getElementsByTagName("input"); 
        for(var b = 0; b < inputs.length; b++) { 
         if(inputs[b].type == "checkbox" && inputs[b].checked == true && inputs[b].className.indexOf("styled") > -1) { 
          inputs[b].previousSibling.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px"; 
         } else if(inputs[b].type == "checkbox" && inputs[b].className.indexOf("styled") > -1) { 
          inputs[b].previousSibling.style.backgroundPosition = "0 0"; 
         } else if(inputs[b].type == "radio" && inputs[b].checked == true && inputs[b].className.indexOf("styled") > -1) { 
          inputs[b].previousSibling.style.backgroundPosition = "0 -" + radioHeight*2 + "px"; 
         } else if(inputs[b].type == "radio" && inputs[b].className.indexOf("styled") > -1) { 
          inputs[b].previousSibling.style.backgroundPosition = "0 0"; 
         } 
        } 
       }, 
       choose: function() { 
        option = this.getElementsByTagName("option"); 
        for(d = 0; d < option.length; d++) { 
         if(option[d].selected == true) { 
          document.getElementById("select" + this.name).childNodes[0].nodeValue = option[d].childNodes[0].nodeValue; 
         } 
        } 
       } 
      } 
      window.onload = Custom.init; 
+0

這是爲ios? – cjd

+0

不,這是用於windows,apache ... –

+0

必須做什麼?..我無法理解你? –

回答

0

請試試這個。

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 
<style> 
<script> 
jQuery.fn.multiselect = function() { 
    $(this).each(function() { 
     var checkboxes = $(this).find("input:checkbox"); 
     checkboxes.each(function() { 
      var checkbox = $(this); 
      // Highlight pre-selected checkboxes 
      if (checkbox.attr("checked")) 
       checkbox.parent().addClass("multiselect-on"); 

      // Highlight checkboxes that the user selects 
      checkbox.click(function() { 
       if (checkbox.attr("checked")) 
        checkbox.parent().addClass("multiselect-on"); 
       else 
        checkbox.parent().removeClass("multiselect-on"); 
      }); 
     }); 
    }); 
}; 

$(function() { 
    $(".multiselect").multiselect(); 
}); 


</script> 

label 
    { 
    line-height:25px; 
    } 

</style> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<style> 
.multiselect { 
    width:10em; 
    height:5em; 
    border:solid 1px #c0c0c0; 
    overflow:auto; 
} 

.multiselect label { 
    display:block; 
} 

.multiselect-on { 
    color:#ffffff; 
    background-color:#3399ff; 
} 
</style> 
<body><div class="multiselect"> 
    <label><input type="checkbox" name="option[]" value="1" class="styled" />Green</label> 
    <label><input type="checkbox" name="option[]" value="2" class="styled"/>Red</label> 
    <label><input type="checkbox" name="option[]" value="3" class="styled"/>Blue</label> 
    <label><input type="checkbox" name="option[]" value="4" class="styled"/>Orange</label> 
    <label><input type="checkbox" name="option[]" value="5" class="styled"/>Purple</label> 
    <label><input type="checkbox" name="option[]" value="6" class="styled"/>Black</label> 
    <label><input type="checkbox" name="option[]" value="7" class="styled"/>White</label> 
</div> 
</body> 
</html> 
+0

http://www.supereleman.com/test/3.html –

+0

http://www.supereleman.com/test/3.html 正如您在上面看到的,您的建議擾亂了我的腳本...所以,您的回答不是我的解決方案 –

+0

有人會幫我嗎? –

相關問題