2011-10-18 20 views
11

wybrać Powiedzmy mam to HTML:jQuery onChange opcję

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

a następnie ten 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.. 

chcę val w polu tekstowym, aby zmienić, gdy użytkownik wybierze opcję, wiem będzie działać, jeśli zawijam wokół niego zdarzenie zmiany, ale czy jest jakiś sposób, aby to zrobić, zachowując go jako zmienną list_value?

+0

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

+0

Rozumiem, ale to jest powód pytam o pomoc :) –

+10

@epascarello tylko dlatego, że znam to nie znaczy, że może, więc zamiast krytykować jego brak wiedzy, spróbuj go wzbogacić ... – Joakim

Odpowiedz

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

Bardzo dziękuję, działało to doskonale dla mnie. –

1

Owijanie zdarzenie zmianą jest lepszy sposób, gdyż tworzy zamknięcie, można użyć zmiennych globalnych, jak poniżej, ale byłoby lepiej (imho) po prostu ponownie chwycić wartość dodatkowych wojsk w dół.

Można technicznie zrobić (chociaż jest to zły pomysł, ponieważ jest zmienne globalne):

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

ta zwraca obiekt jQuery, a nie wartość.

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

Jeśli chcesz wartość poza kodu, trzeba by zrobić coś takiego

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

ALE onchange wydarzenie nigdy nie zaktualizować stronę, tylko że zmienna!

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

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

check stąd http://jsfiddle.net/QrHUN/