Safari点击!=专注于单选按钮

时间:2014-08-12 19:52:28

标签: javascript jquery html css safari

问题

如何在所有浏览器中为点击它或标签的人显示隐藏的div(由单选按钮触发)显示/隐藏(Safari是我的问题)。

故事

我有一个html表单,隐藏的div分散在各处以隐藏在某些情况下可能不需要询问的问题。大多数隐藏的div都是由单选按钮触发的,所以我决定构建以下脚本。我使用.on("焦点")所以隐藏的字段适用于人们在表单中的标签。

$("#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("点击焦点")哪种作品;但是,如果在先前隐藏的div中有其他隐藏的div,则附加div的内容将在父级之外扩展到其他文本中,因为父级高度不会随着其他隐藏的div而改变。

1 个答案:

答案 0 :(得分:0)

您可以创建click处理程序集焦点。

click处理程序中,您可以使用document.activeElement来确定元素是否已经具有焦点。

此处提供更多信息:How do I find out which DOM element has the focus?