使原生submit()事件返回一个值

时间:2013-07-27 23:34:05

标签: javascript jquery

有没有办法让表单的submit()操作将数据返回到调用它的词法范围?我想要这样的东西:

$(function() {
  $("div").click(function() {
    var submitReturn = $("form").submit();
    // do stuff with submitReturn
    ...
    // end do stuff with submitReturn
  }):

  $("form").submit(function(event) {
    event.preventDefault();
    // do stuff
    ...
    // end do stuff

    return someObj;
  });
});

这不起作用。实际的submit(function)注册只是将该函数注册为事件链中的回调,它不会接管整个事件。

我想我可以通过.click事件使用$.post()代替$('form').submit()来实现这一点,这在现实世界的用例中是完全令人满意的选择,但现在我我很好奇我能做什么。

1 个答案:

答案 0 :(得分:2)

您可以将其拆分为另一个功能:

$(function() {
  function submit() {
    // do stuff
    ...
    // end do stuff

    return someObj;
  }

  $("div").click(function() {
    var submitReturn = submit();
    // do stuff with submitReturn
    ...
    // end do stuff with submitReturn
    // Do you call $("form").submit() here anyways? Depends on the situation.
  }):

  $("form").submit(function(event) {
    event.preventDefault();
    submit();
  });
});

(假设有一个表单。)如果它是异步的,你需要传递一个回调。