2011-05-11 16 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> 

y esto jsJquery seleccione Cambio de

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

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

tengo NULL alerta ... ¿Por qué?

+0

[Funciona para mí] (http://jsfiddle.net/trxZK/). – lonesomeday

+0

http://jsfiddle.net/wzzMm/ ¡funciona aquí en Chrome! – rsplak

+0

No ha cerrado la etiqueta de opción para la última entrada. ¿Es un error tipográfico o un error en el código? – Ammu

Respuesta

10

Su código es correcto. He aquí una demostración: http://jsfiddle.net/hKktc/1/

La razón por la que no está recibiendo un valor para la segunda llamada de alerta se debe a que el atributo prefix no existe para el select y sólo existe para el option

+0

PRUEBA CON JQUERY 1.5.2 ....... ERROR ?? – Ste

+1

Eso es un problema realmente extraño. El problema no está en el código, sino en el nombre del atributo. Si lo cambias a 'prefix1' funciona: http://jsfiddle.net/hKktc/7/ No sé si es un error u otra cosa – JohnP

+0

' prefix' podría ser una palabra clave! :) –

4

En su código, $(this) se refiere a <select>, no es la opción. El atributo prefix no existe en el <select>

Esto causará el problema con el segundo ejemplo.

4

El segundo alert volverá nulo, porque <select> no tiene el atributo prefix.

1

¿Qué es lo que esperas exactamente?

Me parece que la segunda alerta - alert($(this).attr('prefix')); es la que causa un problema. Como está, recibe una alerta del número de prefijo, luego una alerta de nulo (provocada por la segunda alerta).

+0

Siguiendo el consejo de @JohnP anterior, de hecho funciona perfectamente si cambia el atributo 'prefijo' a otra cosa. Supongo que 'prefijo' está reservado. Además, esto es un poco más bonito - '$ (document) .ready (function() { $ ('# Nazione'). Change (function() { alert ($ ('option: selected'), esto) .attr ('prefix1')); }); }); ' Ese código por @SLaks en [este hilo] (http://stackoverflow.com/questions/2230704/jquery-getting-custom- atributo-de-opción-seleccionada). – phil

0

Probablemente haya deseado .val() no .attr('prefix'), para obtener el valor seleccionado de <select>.

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

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