1

我正在尝试在提交按钮上使用 javascript。点击提交按钮后,我运行一个例程,该例程使用回调处理程序 h 执行远程回调。根据 h 的结果,我将决定是继续提交还是阻止默认并留在页面上。

我尝试了几种方法。第一个是在回调之后使用 jquery 运行提交:

$('#submit').on('click', function(e) {
  e.preventDefault();
  run_func_with_callback(h);
}

h() {
  if (success) {
    $('#submit').submit();
  }
}

另一个正在尝试无限循环,直到回调更改标志:

callback_flag = 0;

$('#submit').on('click', function(e) {
  run_func_with_callback(h);
  while(callback_flag == 0) {
    setTimeout(function() {}, 1000); // I want some form of sleep function here
  }

  if (callback_flag == -1) {
    e.preventDefault();
  }
}

h() {
  if (success) {
    callback_flag = 1;
  } else {
    callback_flag = -1;
  }
}

但是,这些解决方案都不起作用。第一个我猜 jQuery 并没有真正那样工作。第二个我做的方法不是睡眠功能,也不是我需要的方式。

欢迎任何见解。谢谢!

4

2 回答 2

3

坚持您的第一种方法,这样的工作是否可行:

$('#submit').on('click', function(e) {
    if(!success) {
        e.preventDefault();
        run_func_with_callback(h);
    }
    else {
        success = false;
    }
}

h() {
    if (success) {
        $('#submit').click();
    }
}

重要的是在回调中触发click事件,然后使用 的值success有条件地执行提交。

于 2013-01-12T10:28:06.433 回答
0

你能试试这个吗?

$('#submit').on('click', function(e) {
  e.preventDefault();
  run_func_with_callback(h);
}

h() {
  if (success) {
    $('#submit').closest("form").submit();
  }
}
于 2013-01-12T10:46:42.420 回答