Я пытаюсь добавить выбранное значение параметра, которое визуализируется уже внутри объекта, но ниже не добавляется выбранное значение параметра, даже если они равны. Игнорируя добавление выбрано, это потому, что после этого с добавлением?
eventClick: function(calEvent, jsEvent, view) {
var startFormat = $.fullCalendar.formatDate(calEvent.start, "dd / MM / yyyy");
var form = $("<form id='changeName'>" +
"<h3 class='eventHeader'>Edit Event: " +startFormat+ " </h3>" +
"</div></form>");
form.append("<div class='controls'>" +
"<label class='control-label' for='title'>Language: </label>" +
"<select class='span3' id='lang' name='lang'>" +
<?php foreach($languages as $language): ?>
"<option value='<?=$language->id;?>'><?=$language->title;?></option>" +
<?php endforeach; ?>
"</select>" +
"</div>");
$("#lang option").each(function(){
if ($(this).val() == calEvent.lang)
$(this).attr("selected","selected");
});
}
это просто пример:
<?php
$array = array('lang1' => 'option1', 'lang2' => 'option2');
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="jquery.js" type="text/javascript"></script>
</head>
<body>
<select id="a_select"></select>
<script>
$(function() {
var select_keys = [<?php foreach ($array as $key => $value) {echo "'$key', ";} ?>];
var select_values = [<?php foreach ($array as $value) {echo "'$value', ";} ?>];
$(select_values).each(function(i, item) {
var option = $('<option>'+ item +'</option>');
option.attr('value', select_keys[i]);
$('#a_select').append(option);
});
});
</script>
</body>
</html>
update: добавлены значения ключей.
вы можете загрузить эти значения из другого сценария с помощью ajax, что будет проще и чище.
вместо этого:
$(this).attr("selected","selected");
попробуйте использовать .prop()
:
$(this).prop("selected", true);
вы можете использовать .done()
и вместо этого использовать событие change
:
form.append("<div class='controls'>" +
"<label class='control-label' for='title'>Language: </label>" +
"<select class='span3' id='lang' name='lang'>" +
<?php foreach($languages as $language): ?>
"<option value='<?=$language->id;?>'><?=$language->title;?></option>" +
<?php endforeach; ?>
"</select>" +
"</div>").done(function(){
$(document).on('change', "#lang", function(){
$('option', this).each(function(){
if ($(this).val() == calEvent.lang)
$(this).prop("selected", true);
});
}).change(); //<------fire the change event here when appended in dom
});