我有一个表单字段,需要唯一的代码值。当用户尝试输入新记录或更新现有记录时,我必须检查此代码是否已存在于数据库中。我想出了一个解决方案,其中我使用了模糊功能来发送Ajax调用,然后返回true
或false
。如果返回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);
});
}
我发现的一个问题是,如果我单击以编辑现有记录并更改代码。然后单击“提交”按钮,并且不会触发我的模糊功能。因此,在这种情况下,用户将提交重复的代码,因为在提交之前模糊不运行。我想知道是否有一种方法可以防止这种行为?