2013-06-28 3 views
0

У меня есть страница, в которой у меня есть куча разных вариантов, которые кто-то делает на странице визуально, и по мере того, как выбор делается или изменяется, он обновляет данные в атрибутах на кнопке «Сохранить в избранное». Все отлично работает, в том числе функция отправки AJAX в базу данных, но когда я добавляю в нее код проверки, если есть ошибка, она застревает в ошибке, даже после того, как я ее исправлю. Мне нужно перезагрузить страницу, чтобы очистить ошибку, чтобы она работала.Javascript застрял в предупреждении об ошибке, если страница не перезагружена

Вот 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> 

Мой Validation код в 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); 

Я проверил код, заполнив каждый элемент, и каждое предупреждение срабатывает, когда оно должно исправить LY. Так, например, если я намеренно не укажу «ID карты презентации», появится предупреждение, в котором говорится: «Пожалуйста, выберите дизайн карты презентаций», что является правильным. Поэтому я выбираю дизайн (без перезагрузки страницы) и снова нажимаю кнопку, это дает мне ту же ошибку, хотя я исправил там ошибку на странице.

Как будто он застревает в точке первой ошибки и не пытается запустить код с самого начала. Если я перезагрузите страницу и выберете дизайн презентационной карты и повторите попытку, она отлично работает, но я не могу заставить людей приходить на этот сайт, перезагружая страницу.

Есть ли что-то, что мне не хватает на проверку, чтобы устранить ошибку и запустить функцию с самого начала без перезагрузки страницы?

+0

'if (pres_id) ==" ") {' У вас есть дополнительная закрывающая скобка. –

+0

Извините, не так, как в коде, исправил сообщение на странице. – Matto

+0

Как устанавливаются различные переменные (например, «pres_id», «ref_id» ... и т. Д.), Которые вы используете для проверки? Я бы предположил, что значение не обновляется при изменении. –

ответ

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');