0

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

这是按钮的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);

我通过填写每个项目和每个警报在应该正确时触发来测试代码。因此,例如,如果我故意省略“Presentation Card ID”,则会出现一条警告,提示“请选择一个 Presentation Card Design”,这是正确的。所以我然后选择一个设计(不重新加载页面)并再次按下按钮,它给了我同样的错误,即使我已经修复了页面上的错误。

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

我在验证中是否遗漏了一些东西来清除错误并从头开始再次运行该功能而不重新加载页面?

4

1 回答 1

0

我错误地分配了变量。虽然在大多数情况下都有效,但由于某种原因,它不允许我在运行验证检查后再次提取数据。我将它们更改为 attr('data-presid'),而不是 data('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');
于 2013-06-28T23:52:06.243 回答