Je ne peux pas obtenir la valeur d'une entrée dans un datalist?
J'ai un datalist boîte qui ressemble à ceci:
<td>
<input list="screens.screenid-datalist" type="text" id="screens.screenid" onblur="validate('0','0','jacques')">
<datalist id="screens.screenid-datalist">
<option value="Login"></option>
<option value="ScreenCreator"></option>
</datalist>
<label id="val-screens.screenid" class="Label_Error" style="visibility: hidden;">*</label>
</td>
et j'ai un code JavaScript qui a pour obtenir la valeur de ce datalist.
J'ai essayé toutes les choses suivantes pour obtenir la valeur
document.getElementById('screens.screenid').value
document.getElementById('screens.screenid').text
document.getElementById('screens.screenid').innerHTML
document.getElementById('screens.screenid').option
et il a juste ne semble pas fonctionner.
Est-il quelque chose de mal avec mon JavaScript ou avec mon code HTML?
lorsque j'utilise la console pour obtenir la valeur:
- Fonctionne très bien pour moi (voir jsfiddle.net/Uz2ak) pour sélectionner un élément de la datalist dans
type=text
d'entrée, je dois commencer à le taper et de choisir à partir d'un menu, ou appuyez sur la flèche vers le bas, en Chrome 28. document.getElementById('screens.screenid').value
fonctionne pour moi aussi (Chrome 30, 10 IE et FF 22).- pouvez-vous fournir plus de contexte à ce code? Est-il possible que votre script est en cours d'exécution avant que le DOM est prêt, par exemple?
- Voulez-vous pour obtenir la valeur à partir des données de la liste ou d'entrée??
Vous devez vous connecter pour publier un commentaire.
A fallu quelque temps pour comprendre cela. Regarde mon code ci-dessous :
JS:
HTML:
Maintenant le premier recevra la
value
comme prévu, mais letext
option
ne fonctionnera pas pour la raison évidente que vous n'avez pas le texte ici. Aussi,innerHTML
vous obtiendrez l'enfant du html et pas de la valeur. De plus , vous ne pouvez pas obtenirinnerHTML
d'une entrée de la liste, mais vous pouvez l'obtenir pour le datalist.Essayez ceci :
console.log(document.getElementById('screens.screenid-datalist').innerHTML);
Je l'ai essayé et j'ai obtenu le
innerHTML
sans aucun tracas :Trouver le bin ici : http://jsbin.com/inigaj/1/edit
Event.onDOMready