问题
如何在所有浏览器(Safari 是我的问题)中为单击它或tab 键 的人显示/隐藏隐藏的 div(由单选按钮触发)。
故事
我有一个 html 表单,其中散布着隐藏的 div,以隐藏在某些情况下可能不需要提出的问题。大多数隐藏的 div 都是由单选按钮触发的,所以我决定构建以下脚本。我使用了 .on("focus"),因此隐藏字段将适用于在表单中使用 Tab 键的人。
$("#loan-application").on("focus","input.toggler,span.toggler", function(){
var $show = ($(this).data("show")) ? $($(this).data("show")) : false,
$hide = ($(this).data("hide")) ? $($(this).data("hide")) : false;
if($show){
$show.stop(true).show({animation: "blind", duration: 1000}).addClass("active");
if($show.data("validate")) $show.find(":visible:input.mandatory").addClass("required");
}
if($hide){
$hide.not($show).each(function(){
var $this = $(this);
$this.stop(true).hide({animation: "blind", duration: 1000}).removeClass("active");
($this.data("validate")) ? $this.find(":input.mandatory").removeClass("required") : $this.find(":input.mandatory").addClass("required");
resetForm($this);
});
}
});
此代码在除 Safari 之外的所有浏览器中完成任务。如果在 Safari 中单击单选按钮,它不会“算作焦点”并且不会显示隐藏字段。所以我尝试将事件切换为触发 .on("click focus") 哪种方法有效;但是,如果先前隐藏的 div 中有额外的隐藏 div,则额外的 div 的内容将扩展到父级之外的其他文本,因为父级的高度不会随着额外隐藏的 div 的变化而改变。
最佳答案
您可以创建 click
处理程序设置焦点。
在 click
处理程序中,您可以使用 document.activeElement
来确定元素是否已经获得焦点。
关于javascript - Safari 点击 != 关注单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25272926/