我有一个JSON对象
var jsonString =[
{
"key": "Monday, June 18, 2012",
"value": "10 00 AM|_mod,11 00 AM|_mod,12 00 PM|_mod,13 00 PM|_mod"
},
{
"key": "Tuesday, June 19, 2012",
"value": "13 00 PM|_mod,13 30 PM|_mod,14 00 PM|_mod,14 30 PM|_mod,15 00 PM|_mod"
}
];
我有两个下拉列表我试图将从第一个下拉列表中选择的键与JSON中的键匹配,并使用适当的值填充第二个下拉列表。 我希望选项标签看起来像这样
<option value="10 00 AM|_mod">10 00 AM</option>
但我看到了这个
我认为在创建DOM时,10 00 AM | _mod中的空格会导致出现问题。
这是我的JS代码。
$('#event_date').change(function() {
var event_date = $("#event_date").val(); // first drop-down val
var time_type = null;
var time = null;
for (var x = 0; x < jsonString.length; x++) {
if (event_date == jsonString[x].key) {
var value = jsonString[x].value;
console.log(value); // output: 10 00 AM|_mod,11 00 AM|_mod,12 00 PM|_mod,13 00 PM|_mod
var value_split = value.split(",");
for (var i = 0; i < value_split.length; i++) {
console.log(value_split[i]); // works fine at index 0 I get 10 00 AM|_mod
time_type = value_split[i].split("|");
time = time_type[0];
$('#timeslotIdentifier').append("<option value =" + value_split[i] + ">" + time + "</option>");
};
};
};
});
是否存在编码问题?我尝试添加断点,看起来很好,但是当我检查元素时,我看到了这个。
答案 0 :(得分:4)
您正在创建未加引号属性值。
你应该使用jQuery:
$('<option />').text(time).val(value_split[i]).appendTo('#timeslotIdentifier');
答案 1 :(得分:1)
$('#event_date').change(function() {
var event_date = $("#event_date").val(); // first drop-down val
var time_type = null;
var time = null;
for (var x = 0; x < jsonString.length; x++) {
if (event_date == jsonString[x].key) {
var value = jsonString[x].value;
console.log(value); // output: 10 00 AM|_mod,11 00 AM|_mod,12 00 PM|_mod,13 00 PM|_mod
var value_split = value.split(",");
for (var i = 0; i < value_split.length; i++) {
console.log(value_split[i]); // works fine at index 0 I get 10 00 AM|_mod
time_type = value_split[i].split("|");
time = time_type[0];
$('#timeslotIdentifier').append($("<option>").attr({value: value_split[i]}).text(time));
};
};
};
});
答案 2 :(得分:1)
jQuery的.val()
在这种情况下肯定更好,但如果你不知道错误在哪里,它就在这里:
//Nope. (Missing quotes in HTML)
$('#timeslotIdentifier')
.append("<option value =" + value_split[i] + ">" + time + "</option>");
//Yep.
$('#timeslotIdentifier')
.append("<option value =\"" + value_split[i] + "\">" + time + "</option>");