javascript - 为什么 find ('input:focus' ) 在 safari 中不起作用

标签 javascript jquery safari

我的以下脚本适用于所有浏览器,但不适用于 Safari, 有人知道这种行为的原因是什么吗?

$(function() {

  $('form').on('submit', function(e) {
    e.preventDefault();
    // alert($(this).serialize());
    alert($(this).find('input:focus').attr('name'));
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="./index.php" method="post" accept-charset="utf-8">
  <input type="hidden" name="foo" value="bar">
  <input type="submit" name="foo[bar]" value="Senden">
</form>

最佳答案

如果您使用 Tab 键导航到输入并按 Enter 键,则它可以在 Safari 中使用。

看来,单击该浏览器中的提交按钮将在触发提交事件之前放弃焦点。

如果您想确定单击了哪个提交按钮,请使用单击事件处理程序。

$(function() {

  var $last_clicked_submit = null;

  $('form').on('click', ":submit", function(e) {
    $last_clicked_submit = $(this);
  });


  $('form').on('submit', function(e) {
    e.preventDefault();
    // alert($(this).serialize());
    alert($last_clicked_submit.attr('name'));
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="./index.php" method="post" accept-charset="utf-8">
  <input type="hidden" name="foo" value="bar">
  <input type="submit" name="foo[bar]" value="Senden">
</form>

关于javascript - 为什么 find ('input:focus' ) 在 safari 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36616736/

相关文章:

javascript - PimCore 与 VueJS 和 VueJS-Router

javascript - 使用 Twitter Streaming API 和 jQuery?

javascript - jQuery - $(this) + 选择器 - .each()

php - 带有 php while 循环的 Jquery 动态选择器

javascript - ajax 加载内容中的工具提示

javascript - 如何检测文本区域上箭头键的按下事件?

javascript - 反复绘制更新图像到 Canvas (Safari 在加载期间清空图像)

html - 无法在 safari 浏览器中使用 Enter 提交表单

javascript - 带有元素符号列表等选项的文本输入

javascript - 查找文本区域中光标的位置