2011-10-18 15 views
11

Digamos que tengo este código HTML:jQuery onchange seleccionar la opción

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

y luego este 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.. 

Quiero que el val en el cuadro de texto para cambiar a medida que el usuario selecciona una opción, lo sé funcionará si envuelvo el evento de cambio a su alrededor, pero ¿hay alguna manera de hacerlo mientras lo mantengo como esa variable list_value?

+0

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

+0

entiendo, pero esa es la razón por la que estoy pidiendo ayuda :) –

+10

@epascarello sólo porque usted sabe no significa que pueda hacerlo, así que en lugar de criticar su falta de conocimiento, intente enriquecerlo en su lugar ... – Joakim

Respuesta

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

Muchas gracias, esto funcionó de manera brillante para mí. –

1

Envolver el evento de cambio es la mejor manera, ya que crea un cierre, puede utilizar variables globales como abajo, pero que sería mejor (en mi humilde opinión) simplemente agarrar de nuevo el valor Más adelante, bajando.

técnicamente podría hacerlo (aunque una mala idea, ya que es variables globales):

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

este devuelve un objeto jQuery, no un valor.

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

Si desea que el valor fuera del código, lo que tendría que hacer algo como esto

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

pero el evento onchange nunca va a actualizar la página, justo esa variable!

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

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

cheque de aquí http://jsfiddle.net/QrHUN/

Cuestiones relacionadas