2011-06-22 59 views
47

desactivo el botón como éste en mi página web jQuery Mobile:jQuery Mobile cómo comprobar si el botón está deshabilitado?

$(document).ready(function() { 
    $("#deliveryNext").button(); 
    $("#deliveryNext").button('disable'); 
}); 

y puedo activarlo con

$("#deliveryNext").button('enable'); 

Pero, ¿cómo puedo comprobar si el botón está desactivado o activado?

Este comando da "indefinido":

$("#deliveryNext").attr('disabled') 

Algunas ideas?

Editar: descubro que $ ("# deliveryNext"). Botón ('deshabilitar') solo parece cambiar el estilo del botón, el clic funciona bien después, así que tengo que desactivar el botón de alguna manera también. . he intentado .attr ('discapacitados', 'discapacitado') pero cuando a continuación, probar .attr ('discapacitados') me sale indefinido ...

Edit2: más sobre mi problema "real" en How to disable a link button in jQuery Mobile?

Respuesta

20

uso .prop lugar:

$('#deliveryNext').prop('disabled') 
+0

eso me da el mismo resultado, si yo escribiendo esto en Firebug:. console.log ($ ('# deliveryNext') prop ('disabled')) obtengo "undefined" – RickardP

+0

Impar, debería funcionar: http://jsfiddle.net/8gfYZ/ – kinakuta

+0

Funciona para mí en FireFox. – tponthieux

9

Trate

$("#deliveryNext").is(":disabled") 

El siguiente código funciona para mí:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#testButton").button(); 
     $("#testButton").button('disable'); 
     alert($('#testButton').is(':disabled')); 
    }); 
</script> 
<p> 
    <button id="testButton">Testing</button> 
</p> 
+0

Me da falso pero el botón está deshabilitado con el botón $ ('# deliveryNext'). ('Deshabilitar') – RickardP

+0

¿Tiene el elemento la etiqueta deshabilitada cuando la deshabilita? (Puede consultar a través de Firebug) – lancscoder

0

$ ('# StartButton: desactivado') ..

A continuación, compruebe si es indefinido.

99

intento :is selector de

$("#deliveryNext").is(":disabled") 
+4

OP, por favor acepte esta respuesta !! – maartenmachiels

+3

Use ".prop ('disabled')" en su lugar. – tponthieux

+0

@tponthieux ¿Podrías dar más detalles? – BartoszKP

2

Para ver qué opciones se han establecido en un botónjQuery UI uso:

$("#deliveryNext").button('option') 

Para comprobar si está deshabilitado puede utilizar:

$("#deliveryNext").button('option', 'disabled') 

Desafortunadamente, si el botón no ha sido explícito antes habilitada o deshabilitada, la llamada anterior solo devolverá el objeto del botón en sí, por lo que deberá verificar primero si el objeto de opciones contiene la propiedad 'deshabilitado'.

Por lo tanto, para determinar si un botón se desactiva puede hacerlo de esta manera:

$("#deliveryNext").button('option').disabled != undefined && $("#deliveryNext").button('option', 'disabled') 
0

lo que funcionó para mí fue la siguiente:

$("#testButton").hasClass('ui-state-disabled') 

pero me gusta la respuesta de tomwadley mucho más.

Sin embargo, el código is (': disabled') tampoco funciona para mí, que debería ser la mejor versión. No sé, por qué no funciona.:-(

4

Trate

$("#deliveryNext").is('[disabled]'); 
+0

¿Por qué este trabajo y las otras técnicas no? – markpsmith

6

que tenía el mismo problema y me encontré con esto está funcionando:.

if ($("#deliveryNext").attr('disabled')) { 
    // do sth if disabled 
} else { 
    // do sth if enabled 
} 

Si esto le da indefinido, puede utilizar if condición también

Cuando evalúa undefined, devolverá false.

5

http://jsfiddle.net/8gfYZ/11/ Marque aquí ..

$(function(){ 

    $('#check').click(function(){ 
     if($('#myButton').prop('disabled')) { 
      alert('disabled'); 
      $('#myButton').prop('disabled',false); 
     } 
     else { 
      alert('enabled'); 
      $('#myButton').prop('disabled',true); 
     } 
    }); 
}); 
0

Puede utilizar la función jQuery.is() junto con :disabled selector:

$("#savematerial").is(":disabled") 
0

Ante el mismo problema cuando se trata de comprobar si un botón está desactivado. He intentado una variedad de enfoques, como btn.disabled, .is(':disabled'), .attr('disabled'), .prop('disabled'). Pero nadie trabaja para mí.

Algunos, por ejemplo .disabled o .is(':disabled') regresaron undefined y otra como .attr('disabled') devuelve el resultado incorrecto - false cuando el botón en realidad estaba desactivada.

Pero sólo una técnica funciona para mí: .is('[disabled]') (con corchetes).

Por lo tanto, para determinar si un botón está desactivado intente esto:

$("#myButton").is('[disabled]'); 
Cuestiones relacionadas