2016-07-08 72 views
1
<!DOCTYPE html> 
<html> 
<head> 
<style> 
button.accordion { 
    background-color: #eee; 
    color: #444; 
    cursor: pointer; 
    padding: 18px; 
    width: 100%; 
    border: none; 
    text-align: left; 
    outline: none; 
    font-size: 15px; 
    transition: 0.4s; 
} 

button.accordion.active, button.accordion:hover { 
    background-color: #ddd; 
} 

button.accordion:after { 
    content: '\02795'; 
    font-size: 13px; 
    color: #777; 
    float: right; 
    margin-left: 5px; 
} 

button.accordion.active:after { 
    content: "\2796"; 
} 

div.panel { 
    padding: 0 18px; 
    background-color: white; 
    max-height: 0; 
    overflow: hidden; 
    transition: 0.6s ease-in-out; 
    opacity: 0; 
} 

div.panel.show { 
    opacity: 1; 
    max-height: 500px; 
} 
</style> 
</head> 
<body> 

<form action="page2.html"> 

<button class="accordion">Section 1</button> 
<div class="panel"> 
    Ch.1: <input type=checkbox id="ch1" ><br> 
    Ch.1: <input type=checkbox id="ch1"><br> 
    Ch.1: <input type=checkbox id="ch1"><br> 
</div> 

<button class="accordion">Section 2</button> 
<div class="panel"> 
    Ch.1: <input type="checkbox" id="ch1"><br> 
    Ch.1: <input type="checkbox" id="ch1"><br> 
    Ch.1: <input type="checkbox" id="ch1"><br> 
</div> 

<br> 
<script> 
var acc = document.getElementsByClassName("accordion"); 
var i; 

for (i = 0; i < acc.length; i++) { 
    acc[i].onclick = function(){ 
     this.classList.toggle("active"); 
     this.nextElementSibling.classList.toggle("show"); 
    } 
} 
</script> 

</body> 
</html> 

当我尝试点击“第1部分”或“第2部分”时,页面会自动重定向到page2.html。这是为什么发生? 并且使用相同的代码,我应该如何在“onsubmit”上添加一个java脚本函数?同类型为什么html中的表单动作会自动触发?

+0

添加'的onsubmit = “返回false;”'形式标签 – Viney

+0

但IDK的原因 – Viney

回答

0

您需要使用type="button"的按钮标记,以便不被视为按钮提交引起形式的行动执行

var acc = document.getElementsByClassName("accordion"); 
 
var i; 
 

 
for (i = 0; i < acc.length; i++) { 
 
    acc[i].onclick = function(){ 
 
     this.classList.toggle("active"); 
 
     this.nextElementSibling.classList.toggle("show"); 
 
    } 
 
}
button.accordion { 
 
    background-color: #eee; 
 
    color: #444; 
 
    cursor: pointer; 
 
    padding: 18px; 
 
    width: 100%; 
 
    border: none; 
 
    text-align: left; 
 
    outline: none; 
 
    font-size: 15px; 
 
    transition: 0.4s; 
 
} 
 

 
button.accordion.active, button.accordion:hover { 
 
    background-color: #ddd; 
 
} 
 

 
button.accordion:after { 
 
    content: '\02795'; 
 
    font-size: 13px; 
 
    color: #777; 
 
    float: right; 
 
    margin-left: 5px; 
 
} 
 

 
button.accordion.active:after { 
 
    content: "\2796"; 
 
} 
 

 
div.panel { 
 
    padding: 0 18px; 
 
    background-color: white; 
 
    max-height: 0; 
 
    overflow: hidden; 
 
    transition: 0.6s ease-in-out; 
 
    opacity: 0; 
 
} 
 

 
div.panel.show { 
 
    opacity: 1; 
 
    max-height: 500px; 
 
}
<form action="page2.html"> 
 

 
<button type="button" class="accordion">Section 1</button> 
 
<div class="panel"> 
 
    Ch.1: <input type=checkbox id="ch1" ><br> 
 
    Ch.1: <input type=checkbox id="ch1"><br> 
 
    Ch.1: <input type=checkbox id="ch1"><br> 
 
</div> 
 

 
<button type="button" class="accordion">Section 2</button> 
 
<div class="panel"> 
 
    Ch.1: <input type="checkbox" id="ch1"><br> 
 
    Ch.1: <input type="checkbox" id="ch1"><br> 
 
    Ch.1: <input type="checkbox" id="ch1"><br> 
 
</div> 
 
</form>

0

你必须提到行动如果您执行的任何操作将重定向到您为操作提供的页面,则其他明智的按钮属性。

你可以尝试像这样onsubmit。

 <form onsubmit="return yourFunctionNmae()"> 
      <input type="submit" value="Submit"/> 
    </form> 

的Javascript:

 <script type="html/javascript"> 
      function yourFunctionName() 
      { 
       //required action to be done here. 
      } 
    </script> 
相关问题