我正在尝试在提交按钮上使用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实际上并没有这样做。第二个我所做的方法不是睡眠功能,并且不按照我需要的方式行事。
欢迎任何见解。谢谢!
答案 0 :(得分:2)
坚持你的第一种方法,就像这样的工作:
$('#submit').on('click', function(e) {
if(!success) {
e.preventDefault();
run_func_with_callback(h);
}
else {
success = false;
}
}
h() {
if (success) {
$('#submit').click();
}
}
重要的是在回调中触发click
事件,然后使用success
的值有条件地执行提交。
答案 1 :(得分:0)
你能试试吗?
$('#submit').on('click', function(e) {
e.preventDefault();
run_func_with_callback(h);
}
h() {
if (success) {
$('#submit').closest("form").submit();
}
}