Я нажимаю несколько html, тег span, чтобы отображать сообщение об ошибке, нажатием кнопки. Я только хочу добавить html один раз. Каждый раз, когда нажимается кнопка, он снова добавляет html. Как добавить html только один раз?
Вот код:
<script type="text/javascript">
var j$ = jQuery.noConflict();
j$(document).ready(function() {
var submitButton = j$('[id$=btnSubmit]');
var emailButton = j$('[id$=btnEmail]');
var shippingMethod = j$('[id$=shippingMethod]');
var alternateAddress = j$('[id$=chkbxAlternateAddress]');
var alternateStreet = j$('[id$=alternateaddress]');
var alternateCity = j$('[id$=alternatecity]');
var alternateState = j$('[id$=alternatestate]');
var alternateZip = j$('[id$=alternatezip]');
submitButton.click(function(e){
j$('[id$=documentQuantity]').each(function(index){
if(j$(this).text() == '0') {
j$("#contentQtyError").css({"display":"inline"});
j$(this).parent().parent().css({"background-color":"#FFFFCC"});
e.preventDefault();
}
});
if(shippingMethod.val() == '') {
shippingMethod.after("<span class='shippingMethodErrorMsg'>Error: A Shipping Method is Required</span>");
e.preventDefault();
}
else {
j$(".shippingMethodErrorMsg").remove();
}
if(alternateAddress.attr("checked")) {
alternateStreet.after("<span class='alternateStreetErrorMsg'>Error: A Street Address is Required</span>");
alternateCity.after("<span class='alternateCityErrorMsg'>Error: A City is Required</span>");
alternateState.after("<span class='alternateStateErrorMsg'>Error: A State is Required</span>");
alternateZip.after("<span class='alternateZipErrorMsg'>Error: A Zip is Required</span>");
e.preventDefault();
}
else {
j$(".alternateStreetErrorMsg").remove();
j$(".alternateCityErrorMsg").remove();
j$(".alternateStateErrorMsg").remove();
j$(".alternateZipErrorMsg").remove();
}
});
shippingMethod.change(function(){
if(shippingMethod.val() == 'Email') {
emailButton.css({"display":""});
submitButton.css({"display":"none"});
j$('#containerAltAddressToggle').css({"display":"none"});
j$('[id$=chkbxAlternateAddress]').attr('checked',false);
j$('[id$=alternateAddressPanel]').css({"display":"none"});
j$('#containerCustomKitToggle').css({"display":"none"});
j$('[id$=chkbxCustomKit]').attr('checked',false);
j$('[id$=customKitPanel]').css({"display":"none"});
j$('#containerPersonalNoteToggle').css({"display":"none"});
j$('[id$=chkbxPersonalNote]').attr('checked',false);
j$('[id$=personalNotePanel]').css({"display":"none"});
j$('#containerFollowUpTaskToggle').css({"display":"none"});
j$('[id$=chkbxScheduleTask]').attr('checked',false);
j$('#recurrence').css({"display":"none"});
j$('[id$=commentsBlock]').css({"display":"none"});
}
else {
emailButton.css({"display":"none"});
submitButton.css({"display":""});
j$('#containerAltAddressToggle').css({"display":""});
j$('#containerCustomKitToggle').css({"display":""});
j$('#containerPersonalNoteToggle').css({"display":""});
j$('#containerFollowUpTaskToggle').css({"display":""});
j$('[id$=nextTask]').val("");
j$('[id$=commentsBlock]').css({"display":""});
}
});
alternateAddress.change(function() {
if(alternateAddress.attr("checked") != "checked") {
j$(".alternateStreetErrorMsg").remove();
j$(".alternateCityErrorMsg").remove();
j$(".alternateStateErrorMsg").remove();
j$(".alternateZipErrorMsg").remove();
}
});
});
</script>
Спасибо за любую помощь!
Вы можете обернуть вставленный html в div с определенным идентификатором, используя .wrap()
а затем на вашем клике сделайте что-то вроде этого:
if ($('#idofwrap').length == 0) {
//wrap content and insert here
}
или поместите каждый из ваших кормов в if, если:
if ($('.alternateStreetErrorMsg').length == 0) {
alternateStreet.after("<span class='alternateStreetErrorMsg'>Error: A Street Address is Required</span>");
}
создайте логическое значение в области submitButton.Click(...). проверьте логическое значение в submitButton.Click(...). ref для этого логического значения будет сохранен в функции, связанной с submitButton.Click(...) как часть закрытия этой функции.
Еще красивее, создайте функцию декоратора, чтобы сохранить логическое значение в его закрытии, чтобы вы не загрязняли родительское пространство имен логическим:
submitButton.Click(
(function() {
var notDoneYet = true;
return function(){/** function to insert the html, checking notDoneYet**/}
})()
);
Инициализировать любую глобальную переменную say var я = 0;
и в функции, которая выполняет вставку html, поместите это внутри if(i<1)
и внутри, если i++
. Надеюсь это поможет.
Вы можете проверить размер, как
if ($('.classofspan').size() == 0) {
//add span
}
Использовать .one()
$("elem").one("click", function() {
//only runs once!
});
Ссылка: http://api.jquery.com/one/