2016-11-23 91 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>