Diferencia entre revisiones de «Usuario:Juanda/javascript/Formularios»
De WikiEducator
(→Evitar envío duplicado del formulario:) |
(→DOM y acceso al formulario) |
||
(6 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 13: | Línea 13: | ||
document.forms[0]; //primer formulario de la página web | document.forms[0]; //primer formulario de la página web | ||
document.forms[0].elements[0]; //elemento 0 del formulario | document.forms[0].elements[0]; //elemento 0 del formulario | ||
− | document.forms[0].elements[document.forms[0].elements.length-1]; | + | //último elemento: |
+ | document.forms[0].elements[document.forms[0].elements.length-1]; | ||
</source> | </source> | ||
*Inconvenientes: | *Inconvenientes: | ||
Línea 78: | Línea 79: | ||
var elementos = document.getElementsByName("pregunta"); | var elementos = document.getElementsByName("pregunta"); | ||
for(var i=0; i<elementos.length; i++) { | for(var i=0; i<elementos.length; i++) { | ||
− | alert(" Elemento: " + elementos[i].value + "\n Seleccionado: " + elementos[i].checked); | + | alert(" Elemento: " + elementos[i].value + "\n Seleccionado: " + |
+ | elementos[i].checked); | ||
} | } | ||
</source> | </source> | ||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
+ | |||
====checkbox==== | ====checkbox==== | ||
<source lang="javascript"> | <source lang="javascript"> | ||
− | <input type="checkbox" value="condiciones" name="condiciones" id="condiciones"/> He leido y acepto las condiciones | + | <input type="checkbox" value="condiciones" name="condiciones" id="condiciones"/> |
− | <input type="checkbox" value="privacidad" name="privacidad" id="privacidad"/> He leido la política de privacidad | + | He leido y acepto las condiciones |
+ | <input type="checkbox" value="privacidad" name="privacidad" id="privacidad"/> | ||
+ | He leido la política de privacidad | ||
..... | ..... | ||
var elemento = document.getElementById("condiciones"); | var elemento = document.getElementById("condiciones"); | ||
− | alert(" Elemento: " + elemento.value + "\n Seleccionado: " + elemento.checked); | + | alert(" Elemento: " + elemento.value + "\n Seleccionado: " + |
+ | elemento.checked); | ||
elemento = document.getElementById("privacidad"); | elemento = document.getElementById("privacidad"); | ||
− | alert(" Elemento: " + elemento.value + "\n Seleccionado: " + elemento.checked); | + | alert(" Elemento: " + elemento.value + "\n Seleccionado: " + |
+ | elemento.checked); | ||
</source> | </source> | ||
</div> | </div> | ||
Línea 111: | Línea 118: | ||
var indiceSeleccionado = lista.selectedIndex; | var indiceSeleccionado = lista.selectedIndex; | ||
// Con el índice y el array "options", obtener la opción seleccionada | // Con el índice y el array "options", obtener la opción seleccionada | ||
− | var opcionSeleccionada = lista.options[indiceSeleccionado]; //se podría añadir aquí el .text o .value!!! | + | var opcionSeleccionada = lista.options[indiceSeleccionado]; |
+ | //se podría añadir aquí el .text o .value!!! | ||
// Obtener el valor y el texto de la opción seleccionada | // Obtener el valor y el texto de la opción seleccionada | ||
Línea 117: | Línea 125: | ||
var valorSeleccionado = opcionSeleccionada.value; | var valorSeleccionado = opcionSeleccionada.value; | ||
− | alert("Opción seleccionada: " + textoSeleccionado + "\n Valor de la opción: " + valorSeleccionado); | + | alert("Opción seleccionada: " + textoSeleccionado + "\n Valor de la opción: " |
+ | + valorSeleccionado); | ||
</source> | </source> | ||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
+ | |||
===Otras operaciones=== | ===Otras operaciones=== | ||
====Asignar el foco en el formulario==== | ====Asignar el foco en el formulario==== | ||
Línea 139: | Línea 149: | ||
<div class="slide"> | <div class="slide"> | ||
====Evitar envío duplicado del formulario:==== | ====Evitar envío duplicado del formulario:==== | ||
− | Mediante un botón de tipo <input type="button" />, ya que el código JavaScript mostrado no funciona correctamente con un botón de tipo | + | Mediante un botón de tipo <input type="button" />, ya que el código JavaScript mostrado no funciona correctamente con un botón de tipo <input type="submit" /> |
<source lang="javascript"> | <source lang="javascript"> | ||
− | + | <form id="formulario" action="#"> | |
+ | .... | ||
+ | <input type="button" value="Enviar" onclick="this.disabled=true; | ||
+ | this.value=’Enviando...’; this.form.submit()" /> | ||
+ | </form> | ||
</source> | </source> | ||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
− | ==== ==== | + | ====Limitar el número de caracteres de un textarea ==== |
+ | *En algunos eventos (como onkeypress, onclick y onsubmit) se puede evitar su comportamiento normal si se devuelve el valor false. | ||
+ | *textarea no tiene la propiedad maxlength | ||
<source lang="javascript"> | <source lang="javascript"> | ||
− | + | function limita(maximoCaracteres) { | |
+ | var elemento = document.getElementById("texto"); | ||
+ | if(elemento.value.length >= maximoCaracteres ) { | ||
+ | return false; | ||
+ | } | ||
+ | else { | ||
+ | return true; | ||
+ | } | ||
+ | } | ||
+ | <textarea id="texto" onkeypress="return limita(100);"></textarea> | ||
</source> | </source> | ||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
− | ==== ==== | + | ====Validar que los elementos de un checkbox estén seleccionados ==== |
<source lang="javascript"> | <source lang="javascript"> | ||
+ | formulario = document.getElementById("formulario"); | ||
+ | for(var i=0; i<formulario.elements.length; i++) { | ||
+ | var elemento = formulario.elements[i]; | ||
+ | if(elemento.type == "checkbox") { | ||
+ | if(!elemento.checked) { | ||
+ | return false; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | ====Comprobar que se haya seleccionado al menos una opción en un radiobutton ==== | ||
+ | <source lang="javascript"> | ||
+ | opciones = document.getElementsByName("opciones"); | ||
+ | |||
+ | var seleccionado = false; | ||
+ | for(var i=0; i<opciones.length; i++) { | ||
+ | if(opciones[i].checked) { | ||
+ | seleccionado = true; | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | if(!seleccionado) { | ||
+ | return false; | ||
+ | } | ||
</source> | </source> | ||
</div> | </div> | ||
</div> | </div> |
Última revisión de 08:30 15 oct 2012