2012-05-28 12 views
9

Ho un elemento di input all'interno di un modulo che vorrei poter estrarre il suo valore quando il valore cambia. Dai un'occhiata a questo Fiddle: http://jsfiddle.net/spryno724/WaBzW/1/.jQuery Ascolta tutte le modifiche di input di testo

Utilizzando l'evento change, sono in grado di visualizzare il valore dall'input di testo quando l'input perde lo stato attivo. Tuttavia, il valore non viene aggiornato quando il modulo viene ripristinato o quando JavaScript cancella il valore del testo immesso.

C'è un evento specifico che posso ascoltare per il quale verrà inviato quando qualsiasi cambiamento è fatto ad un controllo di input di testo?

Vorrei evitare il lavoro, come ascoltare quando si ripristina il modulo o quando si preme il pulsante di cancellazione. Questo è un esempio semplificato di ciò che fa la mia applicazione, e diventerà pazzesco abbastanza velocemente se provo a fare tutto questo.

Grazie per il vostro tempo.

+1

Stavo proprio oggi lavorando su questo stesso problema. L'evento '.on' di jQuery dovrebbe gestirlo ma non potrei farlo funzionare. '$ (" # ElementID "). On (" modifica input propertychange paste keyup ", gestore)' ... –

+0

Hmm ... Non ho mai usato '.on()' prima. Lo vedrò –

+0

Ho usato '.live()' ma è stato deprecato dalla versione 1.7 e '.on()' è ora il metodo preferito –

risposta

2

Questa domanda è un duplicato esatto di un'altra. Vedi la risposta con il maggior numero di up-voti come la risposta alla mia domanda:

JS Events: hooking on value change event on text inputs

+0

Si intende (votare) chiudere la domanda come duplicato, quindi non pubblicare una risposta. – Stijn

10
$(document).ready(function() { 
    $('input.clear').click(function() { 
     $('input.input').val(''); 
     $('p.display').text('The value of the text input is: '); 
    }); 

    $('input.input').on('keyup change', function() { 
     $('p.display').text('The value of the text input is: ' + $(this).val()); 
    }); 
})​ 

DEMO 1

Probabilmente questa soluzione può aiutare:

$(document).ready(function() { 
    $('input.clear, input[type=reset]').on('click', function() { 
     $('input.input').val('').change(); 
     $('p.display').text('The value of the text input is: '); 
    }); 

    $('input.input').on('keyup change', function() { 
     $('p.display').text('The value of the text input is: ' + $(this).val()); 
    }); 
});​ 

DEMO 2

+0

Grazie, ma premendo reset non si aggiornerà il testo sopra l'input. –

+1

Che dire quando i dati sono impostati sul valore dell'ingresso da un'altra funzione? '.keyup' non coprirà quello –

+0

Apprezzo il tuo input, ma ho anche detto che mi piacerebbe" evitare gli aggiramenti, come ascoltare quando il modulo viene resettato, o quando viene premuto il pulsante di cancellazione. è un esempio semplificato di ciò che fa la mia applicazione, e diventerà pazzesco abbastanza velocemente se provo a fare tutto questo. " –

-1

Prova

$('#input').live('change',function() {   }) 
+0

'.live()' è ogni volta che ci sono nuovi elementi che vengono aggiunti dinamicamente alla pagina e devono avere eventi collegati a loro: http://api.jquery.com/live/ . –

+6

NON usare '.live()' è stato deprecato dalla versione 1.7 –

+0

Buono a sapersi !!! –

0

Override val metodo di jQuery

HTML

<input id='myInput' name='myInputField' value='v1'>

JS

var myInput = $('#myInput'); 

//this will not trigger the change event 
myInput.val('v2'); 

//override val method 
var oldVal = myInput.val; 
myInput.val = function(value){ 
    var returnVal = oldVal.call(this,value); 
    myInput.change(); 
    return returnVal; 
} 

// this will trigger the change event 
// myInput.val is overridden 
myInput.val('v3'); 

NOTA questo funziona solo se il metodo val viene chiamato dal myInput variabile

Problemi correlati