我正在学习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.
如果可以,请帮助
答案 0 :(得分:1)
jQuery无法知道你的值代表一个数组。相反,它将"[29,1]"
作为字符串。你将在服务器端遇到完全相同的问题。
最好使用查找表和唯一ID。
<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>
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中的值吗?