0

如果我双击提交按钮,我有一个只会提交的表单。此外,如果我不取消绑定('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();
            }
        }
    });
4

1 回答 1

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) 并专门删除了它,而不是删除所有绑定的事件。

此代码有效,并修复了一些需要修复的问题,但我不能肯定它会解决您的问题。

于 2013-04-04T00:07:50.487 回答