Skip to content

Commit 75e5dbf

Browse files
José Miguel Sánchez AlésJosé Miguel Sánchez Alés
authored andcommitted
Añade algunos ejercicios de Javascript y DOM
1 parent c3cdab4 commit 75e5dbf

File tree

12 files changed

+236
-1
lines changed

12 files changed

+236
-1
lines changed

docs/06.html/08.form.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1264,6 +1264,7 @@ <h2><span class="section-number">6.7.6. </span>Ejercicios propuestos<a class="he
12641264
<p>El formulario debería enviarse por el método POST</p>
12651265
</li>
12661266
</ol>
1267+
<p class="oculta"><a class="reference download internal" download="" href="../_downloads/4eb317c21e3c49a8ce2f76817d84b06d/formulario.html"><code class="xref download docutils literal notranslate"><span class="pre">Solución</span> <span class="pre">propuesta</span></code></a>.</p>
12671268
<p class="rubric">Notas al pie</p>
12681269
<aside class="footnote-list brackets">
12691270
<aside class="footnote brackets" id="id7" role="note">

docs/99.ejercicios/64.html-form.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ <h3>Navegación</h3>
125125
<p>El formulario debería enviarse por el método POST</p>
126126
</li>
127127
</ol>
128+
<p class="oculta"><a class="reference download internal" download="" href="../_downloads/4eb317c21e3c49a8ce2f76817d84b06d/formulario.html"><code class="xref download docutils literal notranslate"><span class="pre">Solución</span> <span class="pre">propuesta</span></code></a>.</p>
128129
</section>
129130

130131

docs/99.ejercicios/81-js-dom.html

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,17 @@ <h1>Javascript y <abbr title="Document Object Model">DOM</abbr><a class="headerl
117117
</li>
118118
<li><p>Vuelva a resolver los ejercicios 3 y 6 de la <a class="reference internal" href="80-js-basico.html#ej-js-basicos"><span class="std std-ref">relación básica</span></a>, pero mediante una interfaz <abbr title="HyperText Markup Language">HTML</abbr> para tomar datos y
119119
mostrar resultados.</p></li>
120+
<li><p>Vuelva a resolver el ejercicio 9 de la <a class="reference internal" href="80-js-basico.html#ej-js-basicos"><span class="std std-ref">relación básica</span></a>, pero mediante una interfaz <abbr title="HyperText Markup Language">HTML</abbr> para tomar datos y
121+
mostrar resultados. Incluya en la web una tabla con las equivalencias.</p></li>
122+
<li><p>Vuelva a resolver el ejercicio 6 de la <a class="reference internal" href="80-js-basico.html#ej-js-medios"><span class="std std-ref">relación media</span></a>, pero mediante una interfaz <abbr title="HyperText Markup Language">HTML</abbr> para tomar datos y
123+
mostrar resultados.</p></li>
120124
<li><p>Tome el formulario creado para el <a class="reference internal" href="64.html-form.html#ej-html-form"><span class="std std-ref">ejercicio de HTML sobre formularios</span></a> y añada Javascript para:</p>
121125
<ol class="loweralpha simple">
122126
<li><p>Habilitar el cuadro de texto al marcar la opción de «otras aficiones».</p></li>
127+
<li><p>Evitar que el formulario sea enviado. En vez de eso, una aviso emergente
128+
dirá «Este formulario debería enviarse a algún servidor».</p></li>
129+
<li><p>Capturar el botón «Limpiar» para que pedir confirmación de que realmente
130+
se quiere limpiar.</p></li>
123131
<li><p>Impedir que se envíe el formulario con contraseñas contradictorias. Para
124132
este apartado han de resolverse tres alternativas diferentes.</p>
125133
<ol class="lowerroman simple">
@@ -133,6 +141,7 @@ <h1>Javascript y <abbr title="Document Object Model">DOM</abbr><a class="headerl
133141
</ol>
134142
</li>
135143
</ol>
144+
<p class="sol-oculta"><a class="reference download internal" download="" href="../_downloads/e07aa3b5ed9e9a3d96bb3b49ae520ad2/DOM07-formulario.js"><code class="xref download docutils literal notranslate"><span class="pre">Solución</span> <span class="pre">propuesta</span></code></a>.</p>
136145
</li>
137146
</ol>
138147
</section>
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<!DOCTYPE html>
2+
<html lang=es>
3+
<meta charset="UTF-8">
4+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
5+
<link rel="stylesheet"
6+
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"
7+
integrity="sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw=="
8+
crossorigin="anonymous" referrerpolicy="no-referrer" />
9+
<title>Ejercicio 1</title>
10+
11+
<h1>Formulario de prueba</h1>
12+
<form method="post" action="#">
13+
<fieldset>
14+
<legend>Información personal</legend>
15+
<label>Nombre <input name="nombre"></label> <label>Apellidos <input name="apellidos"></label><br>
16+
<label>Fecha de nacimiento <input type=date></label>
17+
<fieldset name="sexog">
18+
<legend>Sexo</legend>
19+
<label><input name="sexo" type="radio" value="V"> Varón</label>
20+
<label><input name="sexo" type="radio" value="H"> Hembra</label>
21+
</fieldset>
22+
<fieldset name="estadog">
23+
<legend>Estado Civil</legend>
24+
<label><input name="estado" type="radio" value="S"> Soltero</label><br>
25+
<label><input name="estado" type="radio" value="C"> Casado</label><br>
26+
<label><input name="estado" type="radio" value="C"> Viudo</label><br>
27+
<label><input name="estado" type="radio" value="C"> Divorciado</label>
28+
</fieldset>
29+
<label>Teléfono <input type="tel" name="telefono" pattern="\+34-[89][0-9]\.[0-9]{3}\.[0-9]{3}"></label><br>
30+
<label>Teléfono móvil <input type="tel" name="movil" pattern="\+34-[67][0-9]\.[0-9]{3}\.[0-9]{3}"></label><br>
31+
<fieldset name="aficionesg">
32+
<legend>Aficiones</legend>
33+
<label><input name="aficion" type="checkbox" value="lit"> Literatura</label><br>
34+
<label><input name="aficion" type="checkbox" value="cine"> Cine</label><br>
35+
<label><input name="aficion" type="checkbox" value="mus"> Música</label><br>
36+
<label><input name="aficion" type="checkbox" value="tic"> Informática y nuevas tecnologías</label><br>
37+
<label><input name="aficion" type="checkbox" value="sport"> Deporte</label><br>
38+
<label><input name="aficion" type="checkbox" value="mano"> Manualidades</label><br>
39+
<label><input name="aficion" type="checkbox" value="otr"> Otras: </label>
40+
<textarea name="aficionp" disabled placeholder="Especifique cuales..." rows=4 cols=40></textarea>
41+
</fieldset>
42+
</fieldset>
43+
<fieldset>
44+
<legend>Información de usuario</legend>
45+
<label>Nombre de usuario <input name="nick" pattern="[A-Z][a-z]\w*"><br>
46+
<label>Contraseña <input name="password" type="password"> <i class="fas fa-eye" title="Mostrar contraseña"></i></label>
47+
<fieldset>
48+
<legend>¿Cómo ha llegado a esta web?</legend>
49+
<label><input name="origen" type="radio" value="publi"> Publicidad</label><br>
50+
<label><input name="origen" type="radio" value="amigo"> Por un amigo</label><br>
51+
<label><input name="origen" type="radio" value="buscador"> A través de buscadores</label>
52+
</fieldset>
53+
</fieldset>
54+
<button type="reset">Limpiar</button> <button>Enviar</button>
55+
</form>
56+
<script src="js/formulario.js"></script>
57+
</html>
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
window.onload = function(e) {
2+
const otras = document.querySelector('[value=otr]'),
3+
otrasd = document.querySelector('[name="aficionp"]'),
4+
form = document.querySelector("form"),
5+
eye = document.querySelector('.fa-eye'),
6+
reset = document.querySelector('button[type=reset]');
7+
8+
9+
otras.addEventListener("change", e => {
10+
// Habilitamos/deshabilitamos el cuadro de texto.
11+
otrasd.disabled = !e.target.checked;
12+
});
13+
14+
eye.addEventListener('click', e => {
15+
const input = e.target.parentElement.querySelector('input');
16+
if(input.type === "password") {
17+
input.type = "text";
18+
e.target.title = "Ocultar contraseña";
19+
}
20+
else {
21+
input.type = "password";
22+
e.target.title = "Ocultar contraseña";
23+
}
24+
});
25+
26+
reset.addEventListener("click", e=> {
27+
e.preventDefault();
28+
confirm("¿De veras quiere limpiar el formulario?") && form.reset();
29+
});
30+
31+
form.onsubmit = function (e) {
32+
alert("Esta información debe enviarse a algún sitio.")
33+
return false;
34+
}
35+
}

docs/_sources/99.ejercicios/64.html-form.rst.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,7 @@
4646
#. Puntúe la web (entre 0 y 10).
4747

4848
El formulario debería enviarse por el método POST
49+
50+
.. rst-class:: oculta
51+
52+
:download:`Solución propuesta </99.ejercicios/soluciones/formulario.html>`.

docs/_sources/99.ejercicios/81-js-dom.rst.txt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,22 @@ Javascript y |DOM|
4747
<ej-js-basicos>`, pero mediante una interfaz |HTML| para tomar datos y
4848
mostrar resultados.
4949

50+
#. Vuelva a resolver el ejercicio 9 de la :ref:`relación básica
51+
<ej-js-basicos>`, pero mediante una interfaz |HTML| para tomar datos y
52+
mostrar resultados. Incluya en la web una tabla con las equivalencias.
53+
54+
#. Vuelva a resolver el ejercicio 6 de la :ref:`relación media
55+
<ej-js-medios>`, pero mediante una interfaz |HTML| para tomar datos y
56+
mostrar resultados.
57+
5058
#. Tome el formulario creado para el :ref:`ejercicio de HTML sobre formularios
5159
<ej-html-form>` y añada Javascript para:
5260

5361
a. Habilitar el cuadro de texto al marcar la opción de "otras aficiones".
62+
#. Evitar que el formulario sea enviado. En vez de eso, una aviso emergente
63+
dirá "Este formulario debería enviarse a algún servidor".
64+
#. Capturar el botón "Limpiar" para que pedir confirmación de que realmente
65+
se quiere limpiar.
5466
#. Impedir que se envíe el formulario con contraseñas contradictorias. Para
5567
este apartado han de resolverse tres alternativas diferentes.
5668

@@ -62,5 +74,9 @@ Javascript y |DOM|
6274
#. Ponga sólo un campo para la contraseña y un icono que permita ver y
6375
ocultar a voluntad el texto.
6476

77+
.. rst-class:: sol-oculta
78+
79+
:download:`Solución propuesta <soluciones/JS/DOM07-formulario.js>`.
80+
6581
.. |AJAX| replace:: :abbr:`AJAX (Asynchronous JavaScript and XML)`
6682
.. |DOM| replace:: :abbr:`DOM (Document Object Model)`

docs/searchindex.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

source/99.ejercicios/64.html-form.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,7 @@
4646
#. Puntúe la web (entre 0 y 10).
4747

4848
El formulario debería enviarse por el método POST
49+
50+
.. rst-class:: oculta
51+
52+
:download:`Solución propuesta </99.ejercicios/soluciones/formulario.html>`.

source/99.ejercicios/81-js-dom.rst

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,22 @@ Javascript y |DOM|
4747
<ej-js-basicos>`, pero mediante una interfaz |HTML| para tomar datos y
4848
mostrar resultados.
4949

50+
#. Vuelva a resolver el ejercicio 9 de la :ref:`relación básica
51+
<ej-js-basicos>`, pero mediante una interfaz |HTML| para tomar datos y
52+
mostrar resultados. Incluya en la web una tabla con las equivalencias.
53+
54+
#. Vuelva a resolver el ejercicio 6 de la :ref:`relación media
55+
<ej-js-medios>`, pero mediante una interfaz |HTML| para tomar datos y
56+
mostrar resultados.
57+
5058
#. Tome el formulario creado para el :ref:`ejercicio de HTML sobre formularios
5159
<ej-html-form>` y añada Javascript para:
5260

5361
a. Habilitar el cuadro de texto al marcar la opción de "otras aficiones".
62+
#. Evitar que el formulario sea enviado. En vez de eso, una aviso emergente
63+
dirá "Este formulario debería enviarse a algún servidor".
64+
#. Capturar el botón "Limpiar" para que pedir confirmación de que realmente
65+
se quiere limpiar.
5466
#. Impedir que se envíe el formulario con contraseñas contradictorias. Para
5567
este apartado han de resolverse tres alternativas diferentes.
5668

@@ -62,5 +74,9 @@ Javascript y |DOM|
6274
#. Ponga sólo un campo para la contraseña y un icono que permita ver y
6375
ocultar a voluntad el texto.
6476

77+
.. rst-class:: sol-oculta
78+
79+
:download:`Solución propuesta <soluciones/JS/DOM07-formulario.js>`.
80+
6581
.. |AJAX| replace:: :abbr:`AJAX (Asynchronous JavaScript and XML)`
6682
.. |DOM| replace:: :abbr:`DOM (Document Object Model)`
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
window.onload = function(e) {
2+
const otras = document.querySelector('[value=otr]'),
3+
otrasd = document.querySelector('[name="aficionp"]'),
4+
form = document.querySelector("form"),
5+
eye = document.querySelector('.fa-eye'),
6+
reset = document.querySelector('button[type=reset]');
7+
8+
9+
otras.addEventListener("change", e => {
10+
// Habilitamos/deshabilitamos el cuadro de texto.
11+
otrasd.disabled = !e.target.checked;
12+
});
13+
14+
eye.addEventListener('click', e => {
15+
const input = e.target.parentElement.querySelector('input');
16+
if(input.type === "password") {
17+
input.type = "text";
18+
e.target.title = "Ocultar contraseña";
19+
}
20+
else {
21+
input.type = "password";
22+
e.target.title = "Ocultar contraseña";
23+
}
24+
});
25+
26+
reset.addEventListener("click", e=> {
27+
e.preventDefault();
28+
confirm("¿De veras quiere limpiar el formulario?") && form.reset();
29+
});
30+
31+
form.onsubmit = function (e) {
32+
alert("Esta información debe enviarse a algún sitio.")
33+
return false;
34+
}
35+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<!DOCTYPE html>
2+
<html lang=es>
3+
<meta charset="UTF-8">
4+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
5+
<link rel="stylesheet"
6+
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"
7+
integrity="sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw=="
8+
crossorigin="anonymous" referrerpolicy="no-referrer" />
9+
<title>Ejercicio 1</title>
10+
11+
<h1>Formulario de prueba</h1>
12+
<form method="post" action="#">
13+
<fieldset>
14+
<legend>Información personal</legend>
15+
<label>Nombre <input name="nombre"></label> <label>Apellidos <input name="apellidos"></label><br>
16+
<label>Fecha de nacimiento <input type=date></label>
17+
<fieldset name="sexog">
18+
<legend>Sexo</legend>
19+
<label><input name="sexo" type="radio" value="V"> Varón</label>
20+
<label><input name="sexo" type="radio" value="H"> Hembra</label>
21+
</fieldset>
22+
<fieldset name="estadog">
23+
<legend>Estado Civil</legend>
24+
<label><input name="estado" type="radio" value="S"> Soltero</label><br>
25+
<label><input name="estado" type="radio" value="C"> Casado</label><br>
26+
<label><input name="estado" type="radio" value="C"> Viudo</label><br>
27+
<label><input name="estado" type="radio" value="C"> Divorciado</label>
28+
</fieldset>
29+
<label>Teléfono <input type="tel" name="telefono" pattern="\+34-[89][0-9]\.[0-9]{3}\.[0-9]{3}"></label><br>
30+
<label>Teléfono móvil <input type="tel" name="movil" pattern="\+34-[67][0-9]\.[0-9]{3}\.[0-9]{3}"></label><br>
31+
<fieldset name="aficionesg">
32+
<legend>Aficiones</legend>
33+
<label><input name="aficion" type="checkbox" value="lit"> Literatura</label><br>
34+
<label><input name="aficion" type="checkbox" value="cine"> Cine</label><br>
35+
<label><input name="aficion" type="checkbox" value="mus"> Música</label><br>
36+
<label><input name="aficion" type="checkbox" value="tic"> Informática y nuevas tecnologías</label><br>
37+
<label><input name="aficion" type="checkbox" value="sport"> Deporte</label><br>
38+
<label><input name="aficion" type="checkbox" value="mano"> Manualidades</label><br>
39+
<label><input name="aficion" type="checkbox" value="otr"> Otras: </label>
40+
<textarea name="aficionp" disabled placeholder="Especifique cuales..." rows=4 cols=40></textarea>
41+
</fieldset>
42+
</fieldset>
43+
<fieldset>
44+
<legend>Información de usuario</legend>
45+
<label>Nombre de usuario <input name="nick" pattern="[A-Z][a-z]\w*"><br>
46+
<label>Contraseña <input name="password" type="password"> <i class="fas fa-eye" title="Mostrar contraseña"></i></label>
47+
<fieldset>
48+
<legend>¿Cómo ha llegado a esta web?</legend>
49+
<label><input name="origen" type="radio" value="publi"> Publicidad</label><br>
50+
<label><input name="origen" type="radio" value="amigo"> Por un amigo</label><br>
51+
<label><input name="origen" type="radio" value="buscador"> A través de buscadores</label>
52+
</fieldset>
53+
</fieldset>
54+
<button type="reset">Limpiar</button> <button>Enviar</button>
55+
</form>
56+
<script src="js/formulario.js"></script>
57+
</html>

0 commit comments

Comments
 (0)