从Select标记中获取一些Array数据

时间:2010-07-16 16:55:15

标签: jquery

我正在学习JQuery 我用一个非常简单的形式选择了带有一些选项的标签,如下所示:
(表单由服务器生成,每个选项中的值都是从数据库中检索的。)

<select name="data[Site1][quotenumber]" id="data[Site1][quotenumber]"> 
<option name="editquote" value="[29,1]">1</option> 
<option name="editquote" value="[24,2]">2</option> 
</select>

要从选择的选项中获取值,我使用了以下代码:

var whatValue = $('#data\\[\\Site1\\]\\[quotenumber\\] :selected').val();
alert(whatValue);

现在我可以从Select Tag中获取值,但返回的值就像一个数组,即[29,1]。
在每个选项中获取两个值的最佳方法是什么? 我的意思是像这样打印出来:
第一个值是29,第二个值是1.

如果可以,请帮助

4 个答案:

答案 0 :(得分:1)

jQuery无法知道你的值代表一个数组。相反,它将"[29,1]"作为字符串。你将在服务器端遇到完全相同的问题。

最好使用查找表和唯一ID。

HTML:

<select name="data[Site1][quotenumber]" id="data[Site1][quotenumber]">  
    <option name="editquote" value="option-1">1</option>  
    <option name="editquote" value="option-2">2</option>  
</select>

使用Javascript:

var data = {
    'option-1': [29,1],
    'option-2': [24,2]
}

var whatId = $('#data\\[\\Site1\\]\\[quotenumber\\] :selected').val();
var whatValue = data[whatId];
alert(
    "The first value is " + whatValue[0] + ", " + 
    "and the second one is " + whatValue[1] + "."
);

或者,您可以使用jQuery's $.parseJSON function,如下所示:

var whatValue = $.parseJSON(
    $('#data\\[\\Site1\\]\\[quotenumber\\] :selected').val()
);

这比使用eval()更好。

答案 1 :(得分:1)

值非常令人困惑,但如果您真的想要访问各个数字,可以使用例如regexp来匹配字符串并获取匹配器中的值:

var whatValue = $('#data\\[\\Site1\\]\\[quotenumber\\] :selected').val();
var re = /\[([0-9]+),([0-9]+)\]/;
var m = re.exec(whatValue);
alert("The first value is " + m[1] + ", and the second one is " + m[2] + ".")

答案 2 :(得分:1)

这应该有效:

var whatValue = $('#data\\[\\Site1\\]\\[quotenumber\\] :selected').val();
alert(whatValue);

eval('var arr = ' + whatValue);
alert('The first value is: ' + arr[0]);
alert('The second value is: ' + arr[1]);

答案 3 :(得分:1)

我会说你的问题实际上是你输出你的选择的方式..为什么这个形式的值无论如何?

修改

另一个想法是,我不确定你试图在javascript或jquery中获取值,所以......

假设你发布这个数据,如果你保留html的方式就可以解析php中的值吗?