Jquery必须双击才能提交​​表单

时间:2013-04-03 22:48:42

标签: jquery forms submit

我有一个只会提交的表单,如果我双击提交按钮。此外,如果我不解开('提交'),那么它根本不会解雇。我需要改变的任何想法,只需点击一下即可。提前谢谢。

$('#formID').submit(function (event) 
{
    event.preventDefault();
    var InspectionDate = $('#datepicker').val().split('/');
    InspectionDate.reverse();
    InspectionDate = InspectionDate.join('-');
    InspectionHour = $('#time_hour').val();
    InspectionMinutes = $('#time_minutes').val();
    var InspectionDateTime = InspectionDate + ' ' + InspectionHour + ':' + InspectionMinutes + ':00';
    $.ajax(
    {
        type: "POST",
        url: "ajax_booking_check.php",
        data: 'InspectionDateTime=' + InspectionDateTime,
        cache: false,
        success: function (response) 
        {
            if (response == 1) 
            {
                alert("An appointment for the selected Date and Time already exists.\n\nDouble Bookings are not possible.\n\nPlease refer to the calender to find an available appointment.");
            } 
            else 
            {
                $('#formID').unbind('submit').submit();
            }
        }
    });

1 个答案:

答案 0 :(得分:0)

我不熟悉validationEngine,但我已经快速查看了它的源代码,并且我已经玩过你发布的小提琴。这就是我提出的(缩减代码):

jQuery(document).ready(function(){
    var ischecking=false;
    function mychecker(event) {
        if(event.isDefaultPrevented()){
            return false;
        }
        event.preventDefault();
        if(ischecking){
            return false;
        }
        ischecking=true;
        $.ajax({
            // ...
            cache: false,
            success: function(response){
                // ...
                $('#formID').off('submit',mychecker).submit();
            },
            complete: function(){
                ischecking=false;
            }
        });
    }
    jQuery('#formID').validationEngine().submit(mychecker);
});

请注意两项更改:

  1. 我添加了一项检查,以确保验证者尚未取消该事件,并确保它尚未与服务器核对;
  2. 我为该函数指定了一个名称(mychecker)并将其删除,而不是删除所有绑定事件。
  3. 此代码有效,并修复了一些需要修复的问题,但我不能肯定它会解决您的问题。