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 № 1essayer
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);
}