Estoy teniendo jquery de la siguiente manera,

$(document).on('click', '.save_button', function (e) { 
    var amount = $('.actual_pay').val();
});

Lo que significa que cuando un usuario hace clic en el botón con la clase save_button, el script se ejecuta y establece el valor de la var amount en el valor del campo con la clase actual_pay.

Hasta ahora no hay problemas y funciona bien, pero el cuadro de entrada con el nombre de clase actual_pay es editable y cada vez que se puede cambiar el valor, tengo que detectar el valor cambiado del cuadro de entrada, para lo cual tengo intentado con

var amount = $('.actual_pay').val().change(); 

Pero está mostrando error:

.change no es una función.

¿Cómo detectar el cambio que ocurre en la clase actual_pay y almacenar el valor cambiado en la variable de cantidad?

2
Maniraj Murugan 5 mar. 2018 a las 09:38

3 respuestas

La mejor respuesta

Puede adjuntar un escucha de eventos input.

var amount;
$('.actual_pay').on("input", function(){
  console.log("Something is changed in actual_pay");
  amount = $(this).val(); // save val
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="actual_pay">

Las acciones que invocan eventos de entrada son

  • Introducir texto en un elemento.
  • Cortar, eliminar o pegar algunos contenidos.
  • Colocando algo de contenido en un elemento. (solo en Google Chrome y Safari)
2
mplungjan 5 mar. 2018 a las 06:48

Puede obtener el valor de ese cuadro de entrada con esta función:

$( "input.actual_pay" ).keyup(function() {

        var amount = $(this).val();
    });

Si está cambiando esa entrada manualmente, usará 'keyup', de lo contrario debería usar

$( "input.actual_pay" ).change(function() {

        var amount = $(this).val();
    });
-1
Rajesh kumar 5 mar. 2018 a las 06:45

$('.actual_pay').val().change(); no funcionará porque este es un enfoque incorrecto. Puedes hacerlo siguiendo el método

$('.actual_pay').on('input',function(){
 alert('Something Modified');
});
0
Ayaz Shah 5 mar. 2018 a las 06:40