2010-04-04 119 views
0

我有一些问题,虽然jQuery发送一个ID。 我有一个表单选择一些值,我想在变更选项选择时“抓住”id。通过发送选项选择。 jquery

输出错误:[object Object] !! :/

<select name="case_name" id="case_id"> 
      <option value="10009" >Case 1</option> 
      <option value="10010" >Case 2</option> 
      <option value="10011" >Case 3</option> 
      </select> 



    var PARAMS = { "case_id": 10009 }; 

$("#case_id").change(function() { 
    var CASE_ID = $(this).val(); 
    var PARAMS = { "case_id": CASE_ID }; 
    alert(CASE_ID); 
}); 
+0

现在的问题是,PARAMS都必须有一个价值,在选择之前。 如果我将默认值设置为100,它会每次返回100,我提交,如果我更改我的选择。 如果我用警报框进行调试,它显示正确的值:我很困惑。 – william 2010-04-04 01:34:56

+0

你在混合示波器。 PARAMS在这里被声明了两次,在不同的范围(全局和匿名函数内)。从更改回调中的'var PARAMS'中删除var。顺便说一句,像这样的全局变量浮动不是个好主意。 – Anurag 2010-04-04 01:50:16

回答

3

CASE_ID被匿名函数中定义,并且仅此函数内有效。在回调中,您可以简单地将选择框指向为this

$("#case_id").change(function() { 
    var CASE_ID = $(this).val(); 
}); 

在匿名函数之外,它不存在。

var PARAMS = { "case_id": CASE_ID }; 

要么修改change回调以包含PARAMS对象。

$("#case_id").change(function() { 
    var CASE_ID = $(this).val(); 
    var PARAMS = { "case_id": CASE_ID }; 

}); 

或获取值再次

var PARAMS = { "case_id": $("#case_id").val() }; 

或许定义您的新选择的值传递给函数:

function sendValue(value) { 
    var PARAMS = { "case_id": value }; 
    // send the value somewhere 
} 

$("#case_id").change(function() { 
    var CASE_ID = $(this).val(); 
    sendValue(CASE_ID); 
}); 
+0

我改变了最好的代码,与你的一些。我仍然遇到问题。 (在顶部阅读我的评论):) – william 2010-04-04 01:39:23

+0

非常感谢你:-) – william 2010-04-04 02:29:42

+0

很高兴它帮助。干杯! – Anurag 2010-04-04 03:53:24

3
var CASE_ID = $("#case_id option:selected").val();