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

#javascript #jquery

#javascript #jquery

Вопрос:

elow — это код, который я использую, я могу добавить новое поле ввода при нажатии, но оно должно прекратить добавление на основе пользовательского ввода, например, no. из введенных пользователем как 4 на основе этого добавления поле ввода должно остановиться

в приведенном ниже примере: -$bookcount — это поле ввода пользователя, которое поступает из поля ввода html

 var i = 1;
 
 if(i>$(bookcount))
 {
    $('#add').click(function()
    {
    i  ;
    $('#dynamic_field').append('<tr id="row' i '"><td><input type="text" name="title[]" </td><td><button type="button" name="remove" id="' i '" class="btn btn-danger btn_remove">X</button></td></tr>');

 }});

$(document).on('click', '.btn_remove', function(){
    var button_id = $(this).attr("id"); 
    $('#row' button_id '').remove();
});

$('#submit').click(function(){      
    $.ajax({
        url:"name.php",
        method:"POST",
        data:$('#add_name').serialize(),
        success:function(data)
**strong text**     {
            alert(data);
            $('#add_name')[0].reset();
        }
    });
});
  

введите описание изображения здесь

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

1. $(bookcount) дает вам объект jquery — возможно, вы имели в виду if (i > ($(bookcount).val() * 1)) ...

2. Разве это не должно (i < $(bookcount).val()) предполагать, что у вас есть var bookcount = $('#bookcount-input');

3. Это работает, большое спасибо @freedomn

Ответ №1:

Следует отметить пару проблем:

  • Предполагая bookcount , что найдено, $("#bookcount") тогда вам нужно будет получить .val() и преобразовать его в число (как «10»<«2»)
  • Проверьте значение bookcount внутри события click:
 var i = 1;
var bookcount = $("#bookcount");
 
$('#add').click(function() {
    if (i>(bookcount.val()*1)) {
        // do nothing
        return false; 
    }

    i  ;
    $('#dynamic_field').append('<tr....
  
  • поскольку у вас также есть функция удаления, не забудьте уменьшить i при удалении
 $(document).on('click', '.btn_remove', function(){
    --i;
  

(в этом случае я рекомендую что-то другое, чем i , например rowCount ).


Вы также можете отказаться от i функции ( rowCount ), запросив, сколько строк было создано динамически:

 var bookcountinput = $("#bookcount");

$('#add').click(function() {
    var rows = $("#dynamic_field tr").length;
    if (rows > bookcountinput.val()*1) 
        return;

    $('#dynamic_field').append('<tr....    
});
  

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

1. Спасибо, братан, за ответ, но у меня это не работает. это позволяет n нет. времени для добавления новых полей.. вы можете видеть, что я добавляю свой экран пользовательского интерфейса выше. его нет. взрослых — 2, но это не останавливает меня, добавляя количество человек только до 2.

2. Да, вам может потребоваться небольшая настройка, чтобы получить именно то, что вы хотите, например, используйте rows >= bookcountlimit , если у вас исправлена первая строка, а ограничение — это количество дополнительных строк для добавления. Рад, что вы разобрались.