Javascript卡在验证码的错误警报上,除非重新加载页面

时间:2013-06-28 22:07:00

标签: javascript jquery

我有一个页面,我有一些不同的选择,有人在页面上可视化,并随着选择的进行或更改它更新“保存到收藏夹”按钮的属性数据。一切都很好,包括AJAX post函数到数据库,但是当我在其中添加验证代码时,如果出现错误,它会卡在错误上,即使在我修复它之后也是如此。我必须重新加载页面,以清除错误,以使其工作。

这是按钮的php:

<div id="saveFavoriteSection">
    <div id="">Save Favorite As: <input type="text" id="groupName"></div>
    <div id="addFavButton"><a data-entityid="" data-presid="" data-refid="" data-ref2id="" data-aptid="" data-insid="" data-offerid="" data-offer2id="" data-instxtid="" data-brgid="">Add to Favorites Button</a></div>
</div>

JS中的验证码如下:

function favButton(e){
e.preventDefault();

//Assign Variables
var pres_id = $(this).data('presid');
var ref_id = $(this).data('refid');
var ref2_id = $(this).data('ref2id');
var apt_id = $(this).data('aptid');
var ins_id = $(this).data('insid');
var offer_id = $(this).data('offerid');
var offer2_id = $(this).data('offer2id');
var ins_txt_id = $(this).data('instxtid');
var brg_id = $(this).data('brgid');
var entity_id = $(this).data('entityid');

if(pres_id == ""){
    alert('Please Choose a Presentation Card Design');
}else if(ref_id == ""){
    alert('Please Choose a Referral Card Design');
}else if(apt_id == ""){
    if($('input[name=appointmentOn]:checked').val() == 'yes'){
        alert('Please Choose an Appointment Sleeve Design');
    }
}else if(brg_id == ""){
    if($('input[name=burgopakOn]:checked').val() == 'yes'){
        alert('Please Choose a MagicPak Design');
    }
}else if(offer_id == ""){
    alert('Please Choose an Offer for the Outside Referral Card');
}else if(offer2_id == ""){
    if($('input[name=referralInsideOn]:checked').val() == 'yes'){
        alert('Please Choose an Offer for the Inside Referral Card');
    }
}else if(ins_txt_id == ""){
    alert('Please Choose Copy for the Insert');
}else if(group_id == ""){
    alert('Please Enter a Favorite Name');
}else{
    alert('Successfully done dude!');
    //Run executable code and POST here
}
}

这是调用按钮功能的监听功能:

$('#addFavButton').delegate('a', 'click', favButton);

我已经通过填写每个项目来测试代码,并且每个项目都应该正确地触发。因此,例如,如果我故意遗漏“演示卡ID”,则会出现一个警告,上面写着“请选择演示卡设计”,这是正确的。所以我然后选择一个设计(没有重新加载页面)并再次按下按钮,它给了我同样的错误,即使我已经修复了页面上的错误。

它就像是在第一个错误点卡住了,并没有尝试从头开始运行代码。如果我重新加载页面并选择一个演示卡设计并再试一次它工作正常,但我不能让人们来这个网站重新加载页面。

在验证中是否缺少某些内容以清除错误并从头开始再次运行该函数而不重新加载页面?

1 个答案:

答案 0 :(得分:0)

我错误地分配了变量。虽然在大多数情况下有效,但由于某种原因,在运行验证检查后,我不允许再次提取数据。我将它们改为attr('data-presid'),而不是数据('presid')。因此,通过将变量更改为以下内容,它现在可以正常工作:

var pres_id = $(this).attr('data-presid');
var ref_id = $(this).attr('data-refid');
var ref2_id = $(this).attr('data-ref2id');
var apt_id = $(this).attr('data-aptid');
var ins_id = $(this).attr('data-insid');
var offer_id = $(this).attr('data-offerid');
var offer2_id = $(this).attr('data-offer2id');
var ins_txt_id = $(this).attr('data-instxtid');
var brg_id = $(this).attr('data-brgid');
var entity_id = $(this).attr('data-entityid');