/ / asp.net mvc, диалогов прозорец jquery + select + getJson (различни резултати в ff, т.е. и хром) - jquery, asp.net-mvc

asp.net mvc, диалогов прозорец jquery + изберете + getJson (различни резултати във ff, т.е. и хром) - jquery, asp.net-mvc

Използвам jquery 1.3.2 и имам проблем in situatsuin, където попълвам select чрез 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:

// попълва select_elem чрез 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();

}

вътре в този dialDiv има бутон със събитие onClick:

 function LockTime() {
alert($("#select_elem").val());
}

в IE този сигнал показва стойността на избрания елемент, в chrome показва "undefined", а в ff показва първата опция в select, така че работи правилно само в ie = /

има ли някакъв начин да се определи това?

Благодаря ти !

Отговори:

1 за отговор № 1

опитвам

var sel_val = $("#select_elem option:selected");
alert(sel_val.val());

препоръка за по-добро кодиране

$.each(data, function(i,v){
$("<option>").val(v).text(v).appendTo("#select_elem")
});

1 за отговор № 2

Проблемът е свързан с липсата на изрично посочване на избран елемент. И друга точка - това е просто препоръка - вместо текстово представяне използвайте DOM конструкция, така:

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);
}