我有一个多选下拉菜单。我试图在下拉列表中显示选定的值。
如果我对值进行硬编码,它会起作用-
$("select[name=clause1]").val(["ab","cd"]);
但是,如果我使用值定义变量,则不会-
var temp = "[\"ab\",\"cd\"]";
$("select[name=clause1]").val(temp);
我做错了什么?
答案 0 :(得分:1)
第一个代码段使用数组设置值。第二只用一个字符串尝试。由于该字符串没有匹配值,因此它根本不会设置选择框的值。
改为将代码更改为此:
var temp = ["ab", "cd"];
$("select[name=clause1]").val(temp);
此外,如果您具有字符串(JSON),则可以使用JSON.parse
将其转换为数组:
var temp = JSON.parse("[\"ab\",\"cd\"]");
$("select[name=clause1]").val(temp);
答案 1 :(得分:0)
您也可以为此使用eval
功能。
var values= "[\"ab\",\"cd\"]"
$('select').val(eval(values))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select multiple>
<option value="ab">ab</option>
<option value="bc">bc</option>
<option value="cd">cd</option>
</select>
但是eval is evil,但在许多情况下还是有用的。如果您仔细查看链接的说明,它将通过eval告诉您JSON.parse
的用法,但更安全。