добавить HTML только один раз при нажатии кнопки

0

Я нажимаю несколько 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>

Спасибо за любую помощь!

  • 0
    Предполагая, что вы все еще хотите, чтобы нажатие кнопки выполняло какие-то действия при последующих щелчках, просто используйте переменную, чтобы отслеживать, действительно ли вы уже вставили HTML.
  • 1
    пожалуйста, оставьте только соответствующий код
Теги:

5 ответов

0
Лучший ответ

Вы можете обернуть вставленный 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>");
}
1

создайте логическое значение в области submitButton.Click(...). проверьте логическое значение в submitButton.Click(...). ref для этого логического значения будет сохранен в функции, связанной с submitButton.Click(...) как часть закрытия этой функции.

Еще красивее, создайте функцию декоратора, чтобы сохранить логическое значение в его закрытии, чтобы вы не загрязняли родительское пространство имен логическим:

submitButton.Click(
(function() { 
var notDoneYet = true; 
return function(){/** function to insert the html, checking notDoneYet**/}
})()
);
0

Инициализировать любую глобальную переменную say var я = 0; и в функции, которая выполняет вставку html, поместите это внутри if(i<1) и внутри, если i++. Надеюсь это поможет.

0

Вы можете проверить размер, как

if ($('.classofspan').size() == 0) {
//add span
}
  • 0
    Можете ли вы уточнить?
0

Использовать .one()

$("elem").one("click", function() {
    //only runs once!
});

Ссылка: http://api.jquery.com/one/

  • 0
    Хотя очень сложно сказать, чего хочет ОП от своего дампа кода, я думаю, что они все еще хотят, чтобы нажатие кнопки что- то делало , просто не вставляйте html снова при последующих щелчках.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню