2010-07-25 18 views
14

Tengo un formulario donde el usuario necesita hacer clic en un enlace, seleccionar un usuario a través de una ventana emergente que luego rellena un campo oculto con una ID y un campo de visualización con el nombre de usuario.jQuery - ¿Puedo validar un campo deshabilitado?

El campo de visualización está configurado como disabled = "disabled" para forzar al usuario a usar la ventana emergente y no escribir un valor en el campo.

Necesito asegurarme de que el usuario seleccione un nombre. Estoy usando el plugin de validación de jQuery y Jorn.

Realización de una solicitud: verdadero en el campo deshabilitado no parece activarse si el valor está en blanco.

¿Alguna idea de cómo solucionar esto?

+0

Si el campo i s solo para mostrar ¿no puedes simplemente cerrar la identificación en el escondido? Por qué incluso usar un cuadro de texto para un campo de solo visualización. Simplemente use jQuery para escribir en un lapso o div. El usuario no cree que pueda editar el texto y no se queda intentando validar algo que no debería importar. – ahsteele

+0

¿Por qué no valida el campo oculto para comprobar que tiene una identificación? – Matt

Respuesta

27

En lugar de desactivarlo, ¿ha intentado hacerlo de solo lectura?

<input type="text" readonly="readonly" /> 

recuerdo de hace años que los campos con discapacidad no son enviadas por las formas, y por lo tanto probablemente no se validan

Aquí está la W3C HTML4 Spec sobre el tema.

+0

¡Excelente! Ni siquiera sabía que existía. ¿Es compatible con todos los navegadores? – Falantar014

1

por qué no permiten que sólo se acaben la validación y luego desactivar de nuevo ... utilizando el .attr('disabled','') para activarlo y luego .attr('disabled','disabled') desactivar de nuevo que va a pasar tan rápido que incluso no lo note.

2

De acuerdo con la sugerencia anterior de la posible solución podría ser:

var _valid = $.fn.valid; 
$.fn.valid = function (alsoDisabled) { 
    var alsoDisabled = alsoDisabled || false; 
    if (alsoDisabled) { 
     this.find('[disabled]').prop('disabled', false); 
    } 
    var retVal = _valid.apply(this); 
    if (alsoDisabled) { 
     this.find('[disabled]').prop('disabled', true); 
    } 
    return retVal; 
}; 


y por lo que podría llamar al método válido con los argumentos opcionales: $('#form').valid(true) también comprobar campo deshabilitado o $('#form').valid() para la normalidad comportamiento

mejores deseos Gaetano

Cuestiones relacionadas