Параметры выбора jQuery onchange

Скажем, у меня есть этот HTML:

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

а затем этот 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..

Я хочу, чтобы val в текстовом поле менялся, когда пользователь выбирает параметр, я знаю, что он будет работать, если я обернуваю событие изменения вокруг него, но есть ли способ обойти это, сохраняя его как эту переменную list_value?

Ответ 1

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

Ответ 2

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

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

проверьте здесь http://jsfiddle.net/QrHUN/

Ответ 3

Обтекание события изменения является лучшим способом, так как оно создает закрытие, вы можете использовать глобальные переменные, как показано ниже, но вам лучше (imho) просто снова захватить значение снова.

Вы можете технически сделать (хотя и плохая идея, так как это глобальные переменные):

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); 
});

Ответ 4

возвращает объект jQuery, а не значение.

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

Если вам нужно значение вне кода, вам нужно сделать что-то вроде этого

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

НО событие onchange никогда не обновит страницу, просто эту переменную!