javascript - Safari 点击 != 关注单选按钮

标签 javascript jquery html css safari

问题

如何在所有浏览器(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 来确定元素是否已经获得焦点。

更多信息在这里:How do I find out which DOM element has the focus?

关于javascript - Safari 点击 != 关注单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25272926/

相关文章:

php - AJAX 调用如何与 TWIG 一起工作

javascript - 向左滑动时弹出右侧div而不是平滑滑动

javascript - 文档片段和创建父元素有什么区别?

javascript - 防止 React 开发工具更改 props/state

javascript - Facebook JS SDK 不需要 app secret 来验证 : How secure is it?

javascript - Ionic Modal 未打开(TypeError : Cannot read property 'show' of undefined)?

Javascript从谷歌自动完成或从纬度和经度获取城市名称

javascript - 查找当前 SkewX、SkewY 和旋转值 - Javascript

java - 使用小程序减少 HTML

javascript - 如果是移动设备,则更改输入类型值