我有一个HTML表单,在提交时会使用PHP发送包含所有问题和答案的电子邮件。
我需要打破表格,因为它太长了。我只需要一个提交按钮,并且表单只能加载一次。这显然意味着我需要使用JavaScript show / hides。
我尝试过使用很多不同的类型,但我不能让它们与我的表单一起正常工作。它非常大,似乎很难与show / hide一起工作:(
我之前使用过show / hide divs而不是table。
任何人都可以提供任何帮助吗?
我想要的是,
提前致谢。
答案 0 :(得分:7)
这是一个非常普遍的要求。这是一种方式
div
s在页面中打破您的表单,并且易于管理id
,只有第一个可见
<form action=".." ..>
<!-- the first page has style set to be visible -->
<div id="formpage_1" style="visibility: visible; display: block; ..">
<label for="..">..</label>
<input type=".." ..>
..
<!-- NEXT button -->
<input type="button" value="next" onclick="pagechange(1,2);">
</div>
<!-- the 2nd and following pages have style set to be invisible -->
<div id="formpage_2" style="visibility: hidden; display: none; ..">
<label for="..">..</label>
<input type=".." ..>
..
<!-- PREVIOUS and NEXT buttons -->
<input type="button" value="back" onclick="pagechange(2,1);">
<input type="button" value="next" onclick="pagechange(2,3);">
</div>
...
<div id="formpage_10" style="visibility: hidden; display: none; ..">
<label for="..">..</label>
<input type=".." ..>
..
<!-- PREVIOUS and SUBMIT buttons -->
<input type="button" value="back" onclick="pagechange(10,9);">
<input type="submit" value="Submit">
</div>
function pagechange(frompage, topage) {
var page=document.getElementById('formpage_'+frompage);
if (!page) return false;
page.style.visibility='hidden';
page.style.display='none';
page=document.getElementById('formpage_'+topage);
if (!page) return false;
page.style.display='block';
page.style.visibility='visible';
return true;
}
修改强>
如果要使用表格布局,请将for分成更多表格(每页一个)并将id
提供给表格而不是div
s
答案 1 :(得分:3)
如果您只是想在视图中组织表单,那么手风琴小工具之类的东西怎么样?看看http://docs.jquery.com/UI/Accordion
答案 2 :(得分:1)
好吧,如果你很乐意只使用CSS(并考虑到可能出现的跨浏览器问题),一种方法是使用:target
伪类。
将表单分成相关的输入组,在本例中使用fieldset
标记。为每个字段集提供id
属性,并使用fieldset
标记定位a
个。{/ p>
HTML:
<form action="#" method="post">
<a href="#one">Page One</a>
<fieldset id="one">
<legend>Page One</legend>
<label for="p1i1">label for input one</label>
<input id="p1i1" />
<label for="p1i2">label for input two</label>
<input id="p1i2" />
</fieldset>
<a href="#two">Page Two</a>
<fieldset id="two">
<legend>Page Two</legend>
<label for="p2i1">label for input three</label>
<input id="p2i1" />
<label for="p2i2">label for input four</label>
<input id="p2i2" />
</fieldset>
</form>
CSS:
fieldset {
height: 0;
display: none;
overflow: hidden;
-o-transition: all 2s linear;
-webkit-transition: all 2s linear;
-ms-transition: all 2s linear;
-moz-transition: all 2s linear;
transition: all 2s linear;
}
fieldset:target {
display: block;
height: 5em;
-o-transition: all 2s linear;
-webkit-transition: all 2s linear;
-ms-transition: all 2s linear;
-moz-transition: all 2s linear;
transition: all 2s linear;
}
参考文献: