jQuery onchange选择选项

时间:2011-10-18 11:59:02

标签: javascript jquery

假设我有这个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能够随着用户选择一个选项而改变,我知道如果我将更改事件包装在它周围它会工作,但是有什么方法可以将它保持为变量{ {1}}?

4 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:3)

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

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

从这里查看http://jsfiddle.net/QrHUN/

答案 2 :(得分:1)

包装更改事件是更好的方法,因为它创建了一个闭包,你可以使用如下的全局变量,但你会更好(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); 
});

答案 3 :(得分:0)

这会返回一个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事件永远不会更新页面,只是变量!