2011-05-11 14 views
14
<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> 

e questo JSJquery selezionare Cambia

$(document).ready(function() { 
    $('#Nazione').change(function(){ 

     alert($(this).find("option:selected").attr('prefix')); 
     alert($(this).attr('prefix')); 
    }); 
    }); 

ho NULL avviso ... Perché?

+0

[Works for me] (http://jsfiddle.net/trxZK/). – lonesomeday

+0

http://jsfiddle.net/wzzMm/ funziona qui in Chrome! – rsplak

+0

Non hai chiuso il tag dell'opzione per l'ultima voce. C'è un errore o un errore nel codice? – Ammu

risposta

10

Il tuo codice è a posto. Ecco una demo: http://jsfiddle.net/hKktc/1/

Il motivo che non stai ricevendo un valore per la seconda chiamata di allarme è perché l'attributo prefix non esiste per il select ed esiste solo per il option

+0

PROVA CON JQUERY 1.5.2 ....... BUG ?? – Ste

+1

Questo è un problema davvero strano. Il problema non è con il codice, piuttosto con il nome dell'attributo. Se lo si cambia in 'prefix1' funziona: http://jsfiddle.net/hKktc/7/ Non so se si tratta di un bug o qualcos'altro – JohnP

+0

' prefix' potrebbe essere una parola chiave! :) –

4

Nel codice, $(this) si riferisce allo <select>, non l'opzione. L'attributo prefix non esiste nello <select>

Ciò causerà il problema con il secondo esempio.

4

Il 2 ° alert tornerà null, perché <select> non ha attributo prefix.

1

Che cosa ti aspetti esattamente?

Trovo che il secondo avviso - alert($(this).attr('prefix')); è quello che causa un problema. Così come si ottiene un avviso del numero di prefisso, quindi un avviso di null (causato dal secondo avviso).

+0

Seguendo il suggerimento di @JohnP sopra, funziona perfettamente se si modifica il prefisso 'atrtibute 'in qualcos'altro. Presumo che 'prefix' sia riservato. Inoltre, questo è un po 'più bello - '$ (documento) .ready (function() { $ (' # Nazione '). Change (function() { alert ($ (' opzione: selected ', questo) .attr ('prefisso1')); }); }); ' Quel codice da @SLaks in [questo thread] (http://stackoverflow.com/questions/2230704/jquery-getting-custom- attributo-da--opzione selezionata). – phil

0

Probabilmente si desidera .val() non .attr('prefix'), per ottenere il valore selezionato di <select>.

$(document).ready(function() { 
    $('#Nazione').change(function(){ 

     alert($(this).find("option:selected").attr('prefix')); 
     alert($(this).val('prefix')); 
    }); 
    });