Для одного (первое поле ввода) я успешно получаю событие keyup, но оно не работает для всех полей. Я хочу вычислить сумму всех полей и показать их в целом.

Мой код для JavaScript здесь.

$(document).ready(function(){
    var b = 1;
    $('#mon'+b).keyup(function() {
    alert('Monday');
      $('#mon'+b).each(function(){
          b++;
       });  
    alert(b);
  });
});

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

Я могу получить динамический идентификатор, например, mon, mon1, mon2. И если я запускаю код ниже в консоли keyup событие работает.

$('#mon2').keyup(function() {
    alert('Monday');
});

РЕДАКТИРОВАТЬ:-

var b = 1;
alert('Monday');
    $('#mon'+b).each(function(){
        $('#mon'+b).keyup(function() {
            b++;
            alert(b);
        });
    }); 
alert(b);

Изменить: - 2 https://jsfiddle.net/b71a32qL/8/

0
Darshit Soni 24 Фев 2018 в 14:32

4 ответа

Лучший ответ

По вашей js скрипке. Вы должны сделать два изменения,

Изменить 1: - (Добавить класс mon в тип ввода)

 <input type="number" step="any" name="mon1" id="mon1" class="mon cell-size" placeholder="mon">

Измените 2: - Замените свой javascript следующим javascript.

 $(document).on("keyup",'.mon', function(){
        var sum = 0;   
           alert('Monday');
             $('.mon').each(function(){
              var $value = this.value; 
                if($value){
                       sum+=parseFloat($value);              
                  }
              });    
           $('#mon_total').val(sum);
        });

Таким образом, с помощью Jquery вы можете получить общее количество каждого класса mon, используя метод each(). Пожалуйста, дайте мне знать, что это работает или нет?

Вы можете изменить свою сумму с помощью id mon_total.

1
Bhavin 24 Фев 2018 в 13:18
var b = 1;
$(document).on("keyup",'#mon'+b, function(){       
    alert('Monday');
      $('#mon'+b).each(function(){
          b++;
       });  
    alert(b);
  });
0
Nikhil sHETH 24 Фев 2018 в 12:20

Чтобы добавить события к динамически создаваемым элементам, используйте

var ele = '#mon'+b;
$(document).on('keyup',ele,function(){
    console.log('Monday');
})
0
Farhan Haque 24 Фев 2018 в 11:42

Следующий код будет вам полезен,

// keyup event fire on all inputs its id starts with mon
$('input[id^="mon"]').keyup(function() {
var $sum = 0;
     $('input[id^="mon"]').each(function(){
           var $value = this.value; 
           if($value){
                 $sum+=parseFloat($value);              
           }  
     });
alert($sum);
}); 
1
Abhilash Ravindran C K 24 Фев 2018 в 12:05