html
  • forms
  • radio-button
  • 2010-08-31 210 views 54 likes 
    54
    <label>Do you want to accept American Express?</label> 
    Yes 
    <input id="amex" style="width: 20px;" type='radio' name='Contact0_AmericanExpress' value='1' /> 
    No 
    <input style="width: 20px;" type='radio' name='Contact0_AmericanExpress' class='check' value='0' checked="checked" /> 
    

    El botón de opción no aparece como checked de forma predeterminada. Empecé sin una opción predeterminada haciendo una validación js muy simple y no estaba funcionando. Así que opté por usar valores predeterminados hasta que descubrí que algo raro sucedía.Botones de radio "Comprobado" Atributo no funciona

    El marcado es válido y lo he intentado en FF, Safari y Chrome. Nada funciona.

    Creo que es un conflicto con la biblioteca jQuery porque el problema desaparece cuando elimino la secuencia de comandos de la llamada.

    +2

    ¿Cuál es exactamente su problema aquí? Copié tu HTML en un archivo vacío y el botón "No" está marcado. Esto es IE8, FF y Opera. –

    +0

    ver la respuesta (tipo de solución alternativa) debajo de – Manglesh

    Respuesta

    3

    acaba de copiar el código en: http://jsfiddle.net/fY4F9/

    No está marcada por defecto. ¿Tiene algún javascript en ejecución que afectaría a la caja de la radio?

    +0

    Lo sé, es una locura ¿verdad? No, no tengo ningún script que dirija esos botones de dirección. Solo una validación en campos de texto y una secuencia de comandos deslizante. Lo voy a hacer ahora solo para asegurarme ... – Jordan

    +0

    Encontré el culpable pero no sé exactamente qué es lo que está causando el problema en el script – Jordan

    +0

    También intente en un navegador con un caché despejado. Sólo en caso de que –

    -2

    Estás utilizando el código XHTML no estándar (valores deben formularse con comillas dobles, comillas simples) no

    Prueba esto:

    <form> 
        <label>Do you want to accept American Express?</label> 
        Yes<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress" /> 
        No<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked="checked" /> 
    </form> 
    
    +0

    , eso depende del tipo de documento de Jordan. independientemente de eso, aún funcionará en un doctype xhtml; no validará sin embargo. –

    +0

    Lo cambié sólo por diversión, pero sé que ese no es el problema. La validación es buena, pero no resolverá esta. – Jordan

    +5

    @CFP En realidad, se permiten comillas dobles o simples en estándares compatibles con XHTML (transitorio, estricto, HTML5, etc.). Ver: http://dev.w3.org/html5/html-author/#double-quote-attr – matthewpavkov

    0

    Su código es correcto, tratar de depurar su JQuery script para encontrar el problema! Si está utilizando FF puede instalar una extensión para depurar JS (y JQuery) se llama FireBug.

    65

    Si tiene múltiples del mismo nombre con el atributo marcado, tomará la última radio marcada en la página.

    <form> 
    <label>Do you want to accept American Express?</label> 
    Yes<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress" /> 
    maybe<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress" checked="checked" /> 
    No<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked="checked" /> 
    </form> 
    
    +3

    Verificará realmente la última radio dentro del '

    '. Puede tener varias entradas marcadas con el mismo nombre, siempre que pertenezcan a formularios diferentes. –

    +0

    Este fue el problema en mi caso. La página tenía dos divs, de los cuales solo se mostraba uno a la vez. Ambos tenían un grupo de botones de radio con el mismo nombre. En mi caso, ambos tenían el atributo marcado, pero el navegador parecía elegir el del div oculto (el último en el HTML) como el que se usaría para mostrar el botón de opción seleccionado. –

    +0

    @ BrunoLange Este fue mi problema. Estaba representando varias instancias del mismo código HTML en la página, que consistía en dos botones de radio que no estaban dentro de una etiqueta de formulario, con un botón de opción con la propiedad 'checked'. Tuve que envolverlos en una etiqueta '' para cada instancia para que se marcara el botón de opción predeterminado. –

    5
    Hey

    también estaba enfrentando problemas similares, en una página generada ajax .. Tomé fuente generado usando WebDeveloper pluggin en FF, y comprobado todas las entradas en la forma y descubrí que había otro dentro de una casilla de verificación div oculto (pantalla: ninguno) con la misma ID, una vez que cambié la identificación de la segunda casilla de verificación, comenzó a funcionar ... También puedes probar eso ... y decirme el resultado ... aplausos

    1

    hola, creo que si ponga el atributo id para la segunda entrada y asígnele un valor único de id. Funcionará

    <label>Do you want to accept American Express?</label> 
    Yes<input id="amex" style="width: 20px;" type='radio' name='Contact0_AmericanExpress' value='1'/> 
    No<input style="width: 20px;" id="amex0" type='radio' name='Contact0_AmericanExpress' class='check' value='0' checked="checked"/> 
    
    11

    La última solución de JavaScript para este problema molesto:

    Simplemente ajuste el comando jQuery en setTimeout. El intervalo puede ser extremadamente pequeño, utilizo 10 milisegundos y parece funcionar muy bien. La demora es tan pequeña que es virtualmente indetectable para los usuarios finales.

    setTimeout(function(){ 
        $("#radio-element").attr('checked','checked'); 
    },10); 
    

    Esto también trabajará con

    • $("#radio-element").trigger('click');
    • $("#radio-element").attr('checked',true);
    • $("#radio-element").attr('checked',ANYTHING_THAT_IS_NOT_FALSE);

    Hacky Hacky ... ... ... Hacky Hacky ... Sí Lo sé ... por lo tanto, esto es una solución ...

    +0

    Parece que está configurando el atributo 'Marcado' en todos los # radioelementos en su primer ejemplo. – etoxin

    +0

    espere mi mal. no leyó la pregunta de OP. – etoxin

    +0

    esto también funciona '$ (input) .prop ('checked', true);' – Atif

    27

    Esto podría ser que:

    Is there a bug with radio buttons in jQuery 1.9.1?

    En resumen: No utilice attr() pero prop() para el control de botones de radio. Dios no me gusta ... JS

    +5

    Esto puede no haber respondido a la pregunta del OP, pero respondió el mío –

    +8

    :-(usted odia JS – Daan

    +0

    acaba de descubrir el mismo problema ayer. –

    -1

    sólo tiene que añadir el atributo comprobado a cada radio que desea tener por defecto comprobado

    intente esto:

    <input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked/> 
    
    0

    Aquí es una explicación detallada de la propiedad A cuadros vs Atributo enter link description here

    Esto podría ayudar a alguien, aquí es otra manera de recuperar el valor botón de opción seleccionado

    var accepted = $('input[name="Contact0_AmericanExpress"]:checked').val(); 
    

    Configurar el id para botones de opción es opcional aquí.

    feliz de codificación! ....

    6

    entradas radio debe estar dentro de una pantalla de 'marcado' para trabajar.

    Cuestiones relacionadas