2016-10-05 2 views
0

В настоящее время я создал это простое приложение, в котором вы можете добавлять поля ввода с помощью кнопки. Затем, когда достигнутые пределы препятствуют добавлению большего количества, и отображается максимальное сообщение с полем ввода. У вас также есть возможность удалить только что добавленные поля. Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как повторно активировать кнопку добавления, когда пользователь удалил некоторые из полей ввода. Я довольно новичок в jQuery, поэтому, если theres лучший способ написать код, то я все уши. Я воссоздал свой пример в JSfiddle: http://jsfiddle.net/jTh3v/367/.jQuery: Помогите повторно активировать кнопку, когда ограничение будет уменьшено

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

$("#remove").click(function(e){ 
    $("#MAX").hide('<p>MAX</p>'); 
}); 

ответ

2

Внутри вашего

$("#Input").on("click","#remove", function(e){ 

Для того, чтобы снова включить кнопку добавления вы необходимо:

$("#add").prop("disabled",false); 

Чтобы удалить сообщение MAX вы можете:

$("#MAX p:first").remove(); 

fiddle Обновленный.

Вот фрагмент кода:

$(document).ready(function() { 
 
    var max_fields = 5; 
 
    var x = 1; 
 

 
    $("#add").click(function(e){ 
 
    e.preventDefault(); 
 
    if(x < max_fields){ 
 
     x++; 
 
     $("#Input").append(
 
     '<div><input type="text" name="mytext[]"/><a href="#" id="remove">Remove</a></div>' 
 
    ); 
 
    } else if(x == max_fields){ 
 
     $("#MAX").append('<p>MAX</p>'); 
 
     $(this).prop("disabled",true); 
 
    } 
 
    }); 
 

 
    $("#Input").on("click","#remove", function(e){ 
 
    e.preventDefault(); 
 
    x--; 
 
    $("#add").prop("disabled",false); 
 
    $(this).parent('div').remove(); 
 
    $("#MAX p:first").remove(); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<button id="add">Add</button><hr> 
 
<input type="text" name="mytext[]"> 
 
<div id="Input"></div> 
 
<div id="MAX"></div>

+0

Вы не нуждаетесь в этом условном 'if (x <= 0) {x = 0; вернуть; } 'в качестве первого условного' if (x

+0

@SergioAlen Большое спасибо. Если у меня нет элементов для удаления, я не могу уменьшить x. – gaetanoM

3

Вместо этого:

$("#Input").on("click","#remove", function(e){ 
    e.preventDefault(); $(this).parent('div').remove(); x--; 
    }); 

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

$("#Input").on("click","#remove", function(e){ 
    e.preventDefault(); 
    $(this).parent('div').remove(); 
    x--; 
    $("#add").prop("disabled",false); 
    $("#MAX").find('p').remove(); 
    }); 
0

В обработчике событий #remove

$("#Input").on("click", "#remove", function(e) { 
    e.preventDefault(); $(this).parent('div').remove(); x--; 
}); 

добавить следующую строку, чтобы обновить disabled свойство #add:

$('#add').prop('disabled', false); 

Пример:

$("#Input").on("click", "#remove", function(e) { 
    e.preventDefault(); $(this).parent('div').remove(); x--; 
    $('#add').prop('disabled', false); 
    $('#MAX').hide(); 
}); 
0

Существует способ

$("#Input").on("click","#remove", function(e){ 
    e.preventDefault(); 
    $(this).parent('div').remove(); x--; 
    $('#MAX').html(''); 
    if(x===4){ 
     $('#add').prop('disabled', false); 
    } 
}); 

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

Вот jsfiddle

0

Вы должны проверить, если предел больше, чем число в поле ввода при удалении одного из них.

$(document).ready(function() { 
    var max_fields = 5; 
    var x = 1; 

    $("#add").click(function(e){ 
    e.preventDefault(); 
    if(x < max_fields){ 
     x++; 
     $("#Input").append(
     '<div><input type="text" name="mytext[]"/><a href="#" id="remove">Remove</a></div>' 
    ); 
    }else if(x == max_fields){ 
     $("#MAX").append('<p>MAX</p>'); 
     $(this).prop("disabled",true); 
    } 
    }); 

    $("#Input").on("click","#remove", function(e){ 
    e.preventDefault(); $(this).parent('div').remove(); x--; 

    if(x < max_fields){ //here you check if lower than limit 
     $('#add').prop("disabled", false); 
     $("#MAX").html(''); //deleting the content of max 
    } 

    }); 
}); 

Here is the jsfiddle example

1

Для того, чтобы повторно включить кнопку добавить, добавить $('#add').prop('disabled', false); в обработчик событий удалить click.

Кроме того, для отображения MAX, я бы рекомендовал положить <p>Max</p> в HTML, и настройки #MAX дел до style="display:none;", а затем с помощью $('#MAX').show() и $('#MAX').hide() для отображения индикатора MAX. Если вы будете следовать моим указаниям и добавить код выше, чтобы повторно включить кнопку добавления, вы поймете, почему:

  1. индикатор MAX остается на странице после того, как кнопка повторно включена
  2. После того, как вы повторно -enable кнопку добавления, а затем нажмите ее еще раз, пока вы не достигнете максимального количества полей во второй раз, добавьте <p>MAX</p> к div, создавая повторяющиеся индикаторы.
Смежные вопросы