0

誰かがページで視覚的に行うさまざまな選択があるページがあり、選択が行われたり変更されたりすると、[お気に入りに保存] ボタンの属性のデータが更新されます。データベースへの 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」を省略した場合、「プレゼンテーション カードのデザインを選択してください」というアラートが表示されますが、これは正しいことです。そのため、ページをリロードせずにデザインを選択し、もう一度ボタンを押すと、ページのエラーを修正したにもかかわらず、同じエラーが表示されます。

最初のエラーの時点で動かなくなり、最初からコードを実行しようとしないようなものです。ページをリロードしてプレゼンテーション カードのデザインを選択し、もう一度試してみると問題なく動作しますが、このサイトに来てページをリロードすることはできません。

エラーをクリアし、ページをリロードせずに最初から関数を再度実行するための検証に欠けているものはありますか?

4

1 に答える 1