<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>
そしてこのjs
$(document).ready(function() {
$('#Nazione').change(function(){
alert( $(this).find("option:selected").attr('prefix') );
alert( $(this).attr('prefix') );
});
});
アラートがNULLです...なぜですか?
あなたのコードは大丈夫です。これがデモです: http://jsfiddle.net/hKktc/1/
2番目のアラート呼び出しの値が取得されない理由は、属性prefix
がselect
に存在せず、option
にのみ存在するためです。
コードでは、$(this)
はオプションではなく<select>
を参照します。 prefix
属性は<select>
に存在しません
これにより、2番目の例で問題が発生します。
2番目のalert
はnullを返します。これは、<select>
には属性prefix
がありません。
あなたは正確に何を期待していますか?
2番目のアラート--alert( $(this).attr('prefix') );
が問題の原因であることがわかりました。現状では、プレフィックス番号のアラートが表示され、次にnullのアラートが表示されます(2番目のアラートが原因)。
_<select>
_の選択された値を取得するには、.val()
ではなく.attr('prefix')
が必要な場合があります。
_$(document).ready(function() {
$('#Nazione').change(function(){
alert( $(this).find("option:selected").attr('prefix') );
alert( $(this).val('prefix') );
});
});
_