Incrementar el valor del campo de entrada con jQuery

2 minutos de lectura

Avatar de usuario de Mahoni
Mahoní

Cuál es el más corto forma en jQuery (o JavaScript puro) para incrementar el valor de un campo de entrada?

Por ejemplo

<input id="counter" type="hidden" name="counter" value="1">

por lo que cambia a

<input id="counter" type="hidden" name="counter" value="2">

avatar de usuario de thecodeparadox
laparadoja del código

$('#counter').val( function(i, oldval) {
    return parseInt( oldval, 10) + 1;
});

Manifestación

O

$('#counter').val( function(i, oldval) {
    return ++oldval;
});

Manifestación

Puede envolver cualquiera de los códigos anteriores dentro de una función y llamarlo para un mayor incremento. Por ejemplo:

function increment() {
    $('#counter').val( function(i, oldval) {
        return ++oldval;
    });
}

ahora llama increment() cuando y donde necesites.

Creo que el camino más corto es:

$('#counter').get(0).value++ 

o

$('#counter').get(0).value--

Prueba esto:

var $input = $('#counter');

$input.val( +$input.val() + 1 );​

MANIFESTACIÓN

  • ¿Sugeriría usar su selector sobre $("#counter"), ¿si es así por qué? Entonces, ¿no tiene que asignar una identificación adicional?

    – Mahoní

    18 de julio de 2012 a las 16:41


  • ¿Cuál es el propósito del + en ‘+$input.val()’?

    – Nathan

    18 de julio de 2012 a las 16:41

  • @Mahoni No vi que había un atributo de identificación, actualicé la respuesta

    – qwertymk

    18 de julio de 2012 a las 16:41


  • @NathanReed para que no crea que quiero hacer "1" + 1 Cuál podría ser 11 y en su lugar primero lo convierte en un número

    – qwertymk

    18 de julio de 2012 a las 16:42

Avatar de usuario de Robert
Roberto

No hay necesidad de jQuery aquí, en su lugar use JavaScript puro:

document.getElementById('counter').value++;

Manifestación: http://jsfiddle.net/RDMPq/

Puede mover el incremento a una función que acepte identificaciones dinámicas para una mayor portabilidad:

function incrementInput(id){
    document.getElementById(id).value++;
}

Manifestación: http://jsfiddle.net/uyuGY/

Avatar de usuario de Michael Giovanni Pumo
Michael Giovanni Pumo

Podrías intentar esto:

jQuery:

Configure una función para hacer esto:

function incrementVal(selector) {
var $item = selector;
var $curVal = $item.attr("value");
$item.attr("value", parseInt($curVal) + 1 );
}

Úselo con el clic de un botón:

$("#increment").on("click",function() {
incrementVal($('#counter'));
});

Su código HTML:

<input id="counter" type="hidden" name="counter" value="1">
<button id="increment">Increment field</button>

Espero que ayude.

¿Ha sido útil esta solución?