2016-11-23 104 views
-1

我有一些应该做检查,然后提交表单的jQuery代码的问题。表单不提交发布数据

问题是,如果total_hours_for_payperiod小于40,表单会提交,但不会提交任何发布数据。当我尝试在PHP中使用发布数据时,我无法使用。

注意:它可以工作,如果我删除event.preventDefault();!但我需要这条线,因为我的功能是异步的!

任何人都可以帮助我吗?

$("#form_add_entry").submit(function(event) { 
    event.preventDefault(); 

    var data = $(this).serialize(); 
    $.ajax({ 
     type: "POST", 
     dataType: "text", 
     url: "<?=site_url('timesheet/get_hours_for_current_payperiod/')?>", 
     cache : false, 
     data: {data: data}, 
     success: function(resp) { 
      var a = parseInt(JSON.parse(resp)); 

      var entry_hours = parseInt($("#form_add_entry").find('#totalhours').val()) 
      var total_hours_for_payperiod = entry_hours + a 

      if (total_hours_for_payperiod > 40) { 
       $('#biweeklystaffopenovertime').find('#total_remaining').html(total_hours_for_payperiod - 40) 
       $("#addbiweeklytime").modal('hide'); 
       $("#biweeklystaffopenovertime").modal('show'); 
      } else { 
       // Post data isn't submitting, but the form does submit 
       $("#form_add_entry").unbind().submit(); 
      } 
     } 
    }); 
}); 
+0

检查var data = $(this).serialize();的结果。这可能是你有你的问题。为什么它没有event.preventDefault()可以工作,表单是提交像一个常规的形式,非Ajax方式。 – jannej

回答

-1

尝试......它会返回错误,并且不会让实际的表单提交,但随后你可以做你的AJAX的东西。

<form onsubmit="return form_to_submit(); ">Your form.... </form> 
    <script> 

    function form_to_submit(){ 
     var data = $(this).serialize(); 
$.ajax({ 
type: "POST", 
dataType: "text", 
url: "<?=site_url('timesheet/get_hours_for_current_payperiod/')?>", 
cache : false, data: {data: data}, success: function(resp) { var a = parseInt(JSON.parse(resp)); 
var entry_hours = parseInt($("#form_add_entry").find('#totalhours').val()) ; 
var total_hours_for_payperiod = entry_hours + a; 
if (total_hours_for_payperiod > 40) { 
$('#biweeklystaffopenovertime').find('#total_remaining').html(total_hours_for_payperiod - 40) ; 
$("#addbiweeklytime").modal('hide'); 
$("#biweeklystaffopenovertime").modal('show'); 
} else { 
// Post data isn't submitting, but the form does submit 
$("#form_add_entry").unbind().submit(); 
} } 
}); 
return false; 
} 
</script>