Používam jQuery 1.3.2 a mám problém v situatsuin, kde vyplňujem výber cez getJson
html:
<div id="dialDiv">
<select id="select_elem" name="select_elem" style="font-size: 1.4em; line-height: 1em; font-weight: bold; color: #333;">
<input type="button" name="lock" id="lock" value="Lock" onclick="LockTime();" />
</div>
javascript:
// vyplní select_elem cez getJson
function ShowDial(){
$.getJSON("GetFreeTimeSlots",{hour:4},function(data)
{
$.each(data, function()
{
$("#select_elem").append("<option value=""+this.Value+"">" + this.Value + "</option>");
});
}
$("dialDiv").dialog(.......).show();
}
vo vnútri tohto dialDiv je tlačidlo s udalosťou onClick:
function LockTime() {
alert($("#select_elem").val());
}
v IE toto upozornenie zobrazuje hodnotu vybranej položky, v chrome zobrazuje „nedefinované“ a vo ff zobrazuje prvú možnosť v select, takže funguje správne iba v ie = /
existuje nejaký spôsob, ako to vyriešiť?
Ďakujem !
odpovede:
1 pre odpoveď č. 1vyskúšať
var sel_val = $("#select_elem option:selected");
alert(sel_val.val());
odporúčanie pre lepšie kódovanie
$.each(data, function(i,v){
$("<option>").val(v).text(v).appendTo("#select_elem")
});
1 pre odpoveď č. 2
Problém týkajúci sa absencie explicitného určenia vybranej položky. A ďalší bod - je len odporúčanie - namiesto textovej prezentácie použite konštrukciu DOM, takže:
function(){
var oOption = document.createElement("OPTION");
oOption.text=this.Value;
oOption.value=this.Value;
if( some_criteria )//add criteria to select
oOption.selected = true;
$("#select_elem").add(oOption);
}