<select id="Nazione" name="Nazione">
<option prefix='+93' value='AF' >Afghanistan </option>
<option prefix='+355' value='AL' >Albania </option>
<option prefix='+213' value='DZ' >Algeria </option>
<option prefix='+376' value='AD' >Andorra .... etc
</select>
et ce js
$(document).ready(function() {
$('#Nazione').change(function(){
alert( $(this).find("option:selected").attr('prefix') );
alert( $(this).attr('prefix') );
});
});
J'ai alerte NULL ... POURQUOI?
Votre code est bon. Voici une démo: http://jsfiddle.net/hKktc/1/
La raison pour laquelle vous n'obtenez pas de valeur pour le deuxième appel d'alerte est parce que l'attribut prefix
n'existe pas pour le select
et n'existe que pour le option
$(this)
fait référence à <select>
et non à l'option. L'attribut prefix
n'existe pas sur le <select>
Cela causera le problème avec le deuxième exemple.
La 2nd alert
retournera null, car <select>
n'a pas d'attribut prefix
.
Qu'est-ce que vous attendez exactement?
Je trouve que la deuxième alerte - alert( $(this).attr('prefix') );
est celle qui cause un problème. En l'état, vous recevez une alerte du numéro de préfixe, puis une alerte de null (provoquée par la deuxième alerte).
Vous vouliez probablement que .val()
et non .attr('prefix')
, obtienne la valeur sélectionnée de <select>
.
$(document).ready(function() {
$('#Nazione').change(function(){
alert( $(this).find("option:selected").attr('prefix') );
alert( $(this).val('prefix') );
});
});