Tengo un control de entrada que es un campo obligatorio. Sin embargo, quiero usar javascript para cambiar dinámicamente el atributo requerido para que NO sea necesario. Sin embargo, no funciona. ¿Alguna idea de cómo hacer que funcione?

window.onload = function(){
    document.getElementById("website").setAttribute("required","false");
}

<input id="website" type="url" required>
4
nullox 2 sep. 2014 a las 20:34

3 respuestas

La mejor respuesta

required es un llamado atributo booleano . Su mera existencia en el elemento indica que se requiere la entrada. No importa qué valor tenga.

Eliminar el atributo si desea que la entrada sea opcional (lo mismo ocurre con todos los atributos booleanos):

document.getElementById("website").removeAttribute("required");

Alternativamente, acceda a la propiedad DOM y configúrela en false:

document.getElementById("website").required = false;

Por lo general, debería prefiere tratar con propiedades que con atributos. También aclara las intenciones.

3
Community 23 may. 2017 a las 12:23

Este problema es similar a otro que involucra el atributo "oculto". Y para una compatibilidad más amplia, considere la forma XHTML de usar el atributo, en lugar del formulario HTML:

 <input id="website" type="url" required="required" />

(La similitud con 'hidden' es que el atributo se especifica como hidden = "hidden")

De todos modos, cuando intente cambiar el valor del atributo oculto en JavaScript, establecerlo en "falso" no funciona. Sin embargo, establecerlo en una cadena vacía sí, así que eso es lo que podría intentar para 'requerido':

 document.getElementById("website").required="";
 document.getElementById("website").required="required"; //when required wanted
0
vernonner3voltazim 2 sep. 2014 a las 16:50

Probablemente necesite usar el método removeAttribute ()

3
netdog 2 sep. 2014 a las 16:38