2011-10-18 19 views
11

Diciamo che ho questo HTML:jQuery onchange selezionare l'opzione

<select id='list'> 
    <option value='1'>First</option> 
    <option value='2'>Second</option> 
    <option value='3'>Third </option> 
</select> 
<input type ="text" id="text"/> 

e poi questo JavaScript

//other variables are also declared here 
    var x1 = 5; 
    var x2 = 10; 
    var value = x1 * x2; 
    var list_value =$("#list").change(function() { 
      $(this).val(); 
// just an example of how i want the function in the variable 
    }); 
    var nwval = value * list_value; 
     $('#text').val(nwval); 
// some long piece of code 
// i'm also using the list_value value somewhere in the long piece of code.. 

voglio val nella casella di testo per cambiare l'utente seleziona un'opzione, lo so funzionerà se avvolgo l'evento di modifica attorno ad esso, ma c'è un modo per farlo mantenendo la variabile come quella variabile list_value?

+0

http://jsfiddle.net/karim79/BXu26/1/ –

+0

ho capito, ma questa è la ragione per cui mi sto chiedendo aiuto :) –

+10

@epascarello solo perché non si sa non significa che possa, quindi invece di criticare la sua mancanza di conoscenza, prova a arricchirlo invece ... – Joakim

risposta

16
var x1 = 5; 
var x2 = 10; 
var value = x1 * x2; 
var nwval; 
$("#list").change(function() { 
    nwval = value * $(this).val(); 
    $('#text').val(nwval); 
}); 
+0

Grazie mille, questo ha funzionato perfettamente per me. –

1

Avvolgere l'evento di modifica è il modo migliore in quanto crea una chiusura, è possibile utilizzare le variabili globali come sotto, ma sarebbe meglio (imho) per afferrare semplicemente il valore di nuovo futher giù.

Si potrebbe tecnicamente fare (anche se è una cattiva idea in quanto è variabili globali):

var x1 = 5; 
var x2 = 10; 
var value = x1 * x2; 
var list_value = 1; 
$("#list").change(function() { 
    list_value = $(this).val(); 
    var nwval = value * list_value; 
    $('#text').val(nwval); 
}); 
0

questo restituisce un oggetto jQuery, non un valore.

var list_value =$("#list").change(function() { 

Se si desidera che il valore al di fuori del codice, si avrebbe bisogno di fare qualcosa di simile

var list_value = 0; 
var sel = $("#list").change(function() { 
     list_value = $(this).val(); 
}).change(); 
var nwval = value * list_value; 
$('#text').val(nwval); 

ma l'evento onchange non potrà mai aggiornare la pagina, solo quella variabile!

3
$('#text').val($('option:selected').text()); 
$('#list').change(function(){ 

     $('#text').val($('option:selected').text()); 
}) 

assegno da qui http://jsfiddle.net/QrHUN/