Jquery показывает оповещение при щелчке Div только один раз

#jquery #html #click

#jquery #HTML #нажмите

Вопрос:

У меня есть div «addRow», и при нажатии на этот div я добавляю строку в таблицу с помощью Jquery. Как только я завершаю добавление 5 строк и дальнейшее нажатие на div, появляется предупреждение «Превышено количество строк». Как показывать ошибку только один раз при повторном нажатии div снова и снова.

 $('#AddRow').click(function () {
    //Check total rows 
    var maxNuber = 5;
    var rowCount = $('#tblTest tr').length;

    if (rowCount  < maxNuberOfFilters){
        AddRowToTable();
    }
    else{
        alert("Rows exceeded");
    }
});
  

Комментарии:

1. Удалить обработчик щелчка в этот момент?

2. @j08691, который выполняется в предположении, что Chandana хочет, чтобы обработчик щелчков удалялся при превышении максимального количества строк. Мне кажется, что он только хочет, чтобы оповещение было отключено.

Ответ №1:

Это сработает для вас

 var rowCount = 1;
$('#AddRow').on('click','', function() {

    if (rowCount  <= 5){
        rowCount  ; //replace with your logic and conditions...
    }
    else{
        alert("Rows exceeded");
        $('#AddRow').off('click');
    }
});
  

Рабочий пример — http://jsfiddle.net/Hnuc7 /

Ответ №2:

существует множество способов выполнения этой работы, но в отношении того, что у вас есть, я могу предложить следующее :

 $('#AddRow').click(function () {
    //Check total rows 
    var maxNumber = 5;
    var rowCount = $('#tblTest tr').length;

    if (rowCount  < maxNumber){
        AddRowToTable();
    }
    else if(rowCount == maxNumber){
        alert("Rows exceeded");
        rowCount   ;
    }
});
  

Комментарии:

1. Это приведет к неточному количеству строк. Допустим, пользователь нажимает на #addRow 7 раз. Тогда количество строк будет равно 7, но фактическое количество строк все равно будет равно 5.

Ответ №3:

Попробуйте это:

 var rowsExceeded = false;
$('#AddRow').click(function () {
    //Check total rows 
    var maxNuber = 5;
    var rowCount = $('#tblTest tr').length;

    if (rowCount  < maxNuberOfFilters){
        AddRowToTable();
    }
    else{
        if (!rowsExceeded) {
            alert("Rows exceeded");
            rowsExceeded = true;
        }
    }
});
  

По сути, я просто добавил логическую переменную, которая становится true, если строки превышены один раз. С этого момента переменная всегда будет иметь значение true, поэтому оповещение никогда не будет выполнено.

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