单击提交按钮之前,是否触发了模糊功能?

时间:2018-07-19 15:12:55

标签: javascript jquery onblur html5-validation

我有一个表单字段,需要唯一的代码值。当用户尝试输入新记录或更新现有记录时,我必须检查此代码是否已存在于数据库中。我想出了一个解决方案,其中我使用了模糊功能来发送Ajax调用,然后返回truefalse。如果返回false,则表示该值已存在,并且将通知用户,如果true,则可以保存记录。这是我的功能示例:

$('.check-code').on('blur',checkCode);
function checkCode(e) {
    e.preventDefault();
    var element = $(this).get(0), // Dom element
        fldVal = $(this).val(), // Field value
        isValid; // Flag variable.

    if(!fldVal){
        isValid = false
        return;
    }

    $.ajax({
        type: 'POST',
        url: 'AjaxFunctions.cfc?method=checkCode',
        data: {'fldVal':fldVal},
        dataType: 'json'
    }).done(function(obj){
        if(obj.STATUS === 200){
            if(obj.RESULT === true){
                isValid = true;
                element.setCustomValidity("");
            }else{
                isValid = false;
                element.setCustomValidity(obj.MESSAGE);
            }
        }else{
            $('#frm_message').show().addClass(obj.CLASS).html(obj.MESSAGE).delay(7000).fadeOut('slow').queue(function(){
                $(this).removeClass(obj.CLASS).dequeue();
            });
        }
    }).fail(function(jqXHR, textStatus, errorThrown){
        alert('Error: '+errorThrown);
    });
}

//This function submits the form
$('.frm-Submit').on('submit', submitFrm);
function submitFrm(e){
    e.preventDefault(); // Prevnts default form submit.

    var frmID = formData = $(this).serialize();

        $.ajax({
            type: 'POST',
            url: 'AjaxFunctions.cfc?method=saveFrm',
            data: formData,
            dataType: 'json'
        }).done(function(obj){
            if(obj.STATUS === 200){
                //Success.
            }else{
                //Failed.
            }  
        }).fail(function(jqXHR, textStatus, errorThrown){
            alert('Error: '+errorThrown);
        });
}

我发现的一个问题是,如果我单击以编辑现有记录并更改代码。然后单击“提交”按钮,并且不会触发我的模糊功能。因此,在这种情况下,用户将提交重复的代码,因为在提交之前模糊不运行。我想知道是否有一种方法可以防止这种行为?

0 个答案:

没有答案