/ / asp.net mvc, jquery dialog + select + getJson (différents résultats dans ff, ie et chrome) - jquery, asp.net-mvc

asp.net mvc, jquery dialog + select + getJson (différents résultats dans ff, ie et chrome) - jquery, asp.net-mvc

J'utilise jquery 1.3.2, et j'ai un problème in situatsuin où je remplis select via 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:

// remplit select_elem via 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();

}

à l'intérieur de ce dialDiv il y a un bouton avec l'événement onClick:

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

dans IE, cette alerte affiche la valeur de l'élément sélectionné, dans chrome, elle affiche "non défini", et dans ff, elle affiche la première option dans select, donc cela ne fonctionne correctement que dans ie = /

Y a-t-il un moyen de réparer ceci ?

Je vous remercie !

Réponses:

1 pour la réponse № 1

essayer

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

recommandation pour un meilleur codage

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

1 pour la réponse № 2

Le problème concernait l'absence explicite de spécification de l'élément sélectionné. Et autre point - est juste une recommandation - au lieu de la présentation de texte, utilisez la construction DOM, donc:

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