我想让一个大型表格更加友好。有一些用于特殊情况的字段被隐藏在手风琴容器内,提供链接以在需要时显示它们。
然而(至少在Chrome中)如果您通过字段进行制表符,您将最终聚焦于对键盘输入可用但从视图中隐藏的字段。
处理这个问题的好方法是什么?使用jQuery基于display!= none设置tabindex,然后在手风琴事件发生时重新设置?也许当CSS隐藏的字段收到焦点时,包围手风琴会打开?
以下是使用下面的html演示该问题的jsfiddle: http://jsfiddle.net/2EfXM/
<p class="file_info">
<label>Visible
<input type="text" name="vis1" id="vis1" class="date" value="" />
</label>
</p>
<div class="accordion" id="accordion2">
<div class="accordion-group">
<div class="accordion-heading"> <a class="accordion-toggle accordion-arrow" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
Show more fields
</a>
</div>
<div id="collapseOne" class="accordion-body collapse out">
<h5>Source/Use Metadata</h5>
<p class="file_info">
<label>Hidden:
<input type="text" name="default_original_source" id="default_original_source" class="" value="" />
</label>
</p>
</div>
</div>
</div>
<p class="file_info">
<label>Visible
<input type="text" name="vis2" id="vis2" class="date" value="" />
</label>
</p>
有趣的一点是:在IE 9中使用display:none
会破坏jQuery验证。它会在隐藏字段上抛出错误:
SCRIPT5007:无法获取属性“call”的值:对象为null或未定义
jquery.validate.js,1174行,字符5
经过一些研究,这是最终的解决方案:
.collapse input {
visibility: hidden;
}
.collapse.in input {
visibility:visible;
}