我有以下脚本可在所有浏览器中使用,但不能在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中确实有效。

在该浏览器中单击“提交”按钮似乎会在触发提交事件之前放弃焦点。

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



$(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>

09-20 05:56