如何在e.preventDefault()之后恢复提交事件的执行?

时间:2018-09-08 19:34:20

标签: javascript php jquery

美好的一天。我有以下代码:

$(document).on('submit','#formEdit',function(e){
    if(<?=$id_rol?> != $("#select_privilegios").val()){
      <?php if($id_usuario_actual == $userID):?>
        e.preventDefault();
        $('#warningEditarRol').modal();
        $('#warningEditarRol').modal('open');
        if($("#warningEditarRol .statusBtn").on("click",function(){
          //here resume the execution of the submit event
        }));
      <?php endif;?>      
    }
});

此代码的作用是,如果满足某些条件,它将使用两个按钮打开modal window#warningEditarRol),一个按钮取消,另一个按钮继续(.statusBtn) 。我想做的是,当我选择“继续”按钮时,我恢复了执行提交事件,并发送了表单,但是我真的不知道如何去做,如果有人可以指导我,我会非常感谢。

2 个答案:

答案 0 :(得分:1)

据我所知,preventDefault()之后您无法恢复活动。

但是您不必:

// direct submit is prohibited by default
var doSubmit = false;
$(document).on('submit','#formEdit',function(e){
    if(<?=$id_rol?> != $("#select_privilegios").val()){
        <?php if($id_usuario_actual == $userID):?>
            if (doSubmit) {
                // this submit will pass but next one will be promted for
                doSubmit = false;
            } else {
                e.preventDefault();
                $('#warningEditarRol').modal();
                $('#warningEditarRol').modal('open');
                if($("#warningEditarRol .statusBtn").on("click",function(){
                    // unlock submit and resubmit
                    doSubmit = true;
                    $('#formEdit').submit();
                }));
            }

        <?php endif;?>      
     }
});

答案 1 :(得分:0)

一种替代方法是使用AJAX并将POST数据发送到PHP文件。

$(document).on('submit','#formEdit',function(e){
if(<?=$id_rol?> != $("#select_privilegios").val()){
  <?php if($id_usuario_actual == $userID):?>
    e.preventDefault();
    $('#warningEditarRol').modal();
    $('#warningEditarRol').modal('open');
    if($("#warningEditarRol .statusBtn").on("click",function(){
      //here resume the execution of the submit event using AJAX
      $.post(/*1st Argument:URL or PHP file you want to send data to,2nd 
Argument:Data that you may send,
3rd Argument:Callback function to call upon successful submission of data*/);
    }));
  <?php endif;?>      
   }
});

此方法有点复杂,但是AJAX可以提供许多有用的功能。您可以在线搜索它,但是在这里为我提供有关它的更多信息将成为话题。