M06 UF3A2. Teoria

De wikijoan
Salta a la navegació Salta a la cerca

T. Recórrer un formulari, diferents tècniques

fitxer form1.htm: recorrem un formulari (amb diversos elements) amb diferents tècniques, i diferents maneres d'accedir als elements del formulari. S'ha de tenir present que el valor dels radio button i dels check box no és evident.

    <!DOCTYPE html>
    <html lang="es-ar">
    <head>
    <meta charset="utf-8" />
    <title>Comptar elements</title>
    <meta name="description" content="Comptar elements" />
    <script type="text/javascript">
    //<![CDATA[
    var valor = "";
    function elementsForm1() {
    var dades = "";
    var form_elements = document.getElementById('formu').elements;
    for (i=0; i<form_elements.length; i++) {
        if(form_elements[i].value == ''){
        valor = 'sense valor';
        }else{
            if((form_elements[i].type == 'radio')||(form_elements[i].type == 'checkbox')){
                if(form_elements[i].checked == true){
                valor = form_elements[i].value;
                }else{
                valor = "sense valor";
                }
            }else{
            valor = form_elements[i].value;
            }
    }
    dades += form_elements[i].tagName +'(' + form_elements[i].name + ' - ' + form_elements[i].type +')' +'-' + valor + '<br />';
    }
	document.getElementById('info').innerHTML = dades;
    }

    function elementsForm2() {
		forms = document.getElementsByTagName("form");
		dades = "Número de formularis:<br />";
		dades += forms.length;
		dades += "<br />";
		dades += "Nom del formulari:<br />";
		dades += forms[0].name;
		dades += "<br />";
		dades += "Número d'elements del formulari:<br />";
		dades += forms[0].elements.length;
		dades += "<br />";
		dades += "Llistat de tots els elements del formulari:<br />";
		for (i=0;i<forms[0].elements.length;i++)           
		{
			dades += forms[0].elements[i].name;
			dades += " (" + forms[0].elements[i].type + ")";
            if((forms[0].elements[i].type == 'radio')||(forms[0].elements[i].type == 'checkbox')){
                if(forms[0].elements[i].checked == true){
                dades += " - " + forms[0].elements[i].value;
                }else{
                dades += " - ";
                }
            }else{
            dades += " - " + forms[0].elements[i].value;
            }

			dades += "<br />";
		}
		document.getElementById('info').innerHTML = dades;
	}

    function elementsForm3() {
		//bàsicament és igual que l'anterior, però canvia una mica la forma de recórrer el formulari
		dades = "Llistat de tots els elements del formulari:<br />";
		for(i=0; ele=document.frm_dades_personals.elements[i]; i++)          
		{
			dades += ele.name;
			dades += " (" + ele.type + ")";
            if((ele.type == 'radio')||(ele.type == 'checkbox')){
                if(ele.checked == true){
                dades += " - " + ele.value;
                }else{
                dades += " - ";
                }
            }else{
            dades += " - " + ele.value;
            }

			dades += "<br />";
		}
		document.getElementById('info').innerHTML = dades;
}

    function elementsForm4() {
		dades = "";
		dades += document.forms[0].name + " - " + document.forms[0].action + "<br />";
		//abusant del DOM:
		dades += document.frm_dades_personals.name + " - " + document.frm_dades_personals.action + "<br />";

		dades += document.forms[0].elements[1].name + " - " + document.forms[0].elements[1].type + "<br />";
		//abusant del DOM:
		dades += document.frm_dades_personals.nom.name + " - " + document.frm_dades_personals.nom.type + "<br />";

		dades += document.forms[0].elements[1].name + " - " + document.frm_dades_personals.nom.type + "<br />";

		document.getElementById('info').innerHTML = dades;
	}

    function elementsForm5() {
		//Recorrem els nodes del formulari. Això vol dir que els nodes no seran només els elements del formulari pròpiament,
		//sinó també tots els elements HTML que conté, com ara <br />, etc.
		dades = "";
		frm_nodes = document.forms[0].childNodes;
		dades += "Número de nodes: " + frm_nodes.length + "<br />";
		for (i=0;i<frm_nodes.length;i++)           
		{
			dades += frm_nodes[i] + " - ";
			dades += "tipus: " + frm_nodes[i].type + " - ";
			dades += "nodename: " + frm_nodes[i].nodeName + " - ";
			dades += "name: " + frm_nodes[i].name + " - ";
			dades += "valor: " + frm_nodes[i].value + "<br />";
		}
		document.getElementById('info').innerHTML = dades;
	}

    //]]>
    </script>
    </head>
    <body>
	<h1>Exemple de formulari</h1>
    <form name="frm_dades_personals" id="formu" action="processar.htm">
    <input type="hidden" name="num" value="12"><br />
    nom: <input type="text" name="nom"><br />
    cognoms: <input type="text" name="cognom"><br />
	password: <input type="password" name="pwd"><br />
	<input type="radio" name="sex" value="male" >Male<br />
	<input type="radio" name="sex" value="female">Female<br />
	<input type="checkbox" name="chk_bici" value="bici">Bicicleta<br />
	<input type="checkbox" name="chk_cotxe" value="cotxe">Cotxe<br /> 

	<select name="cotxes">
	<option value="volvo">Volvo</option>
	<option value="saab">Saab</option>
	<option value="fiat">Fiat</option>
	<option value="audi">Audi</option>
	</select><br />
	<textarea name="txt_area" rows="10" cols="30"></textarea><br />

    <input type="button" onclick="elementsForm1();" name="processar1" value="processar1"><br />
    <input type="button" onclick="elementsForm2();" name="processar2" value="processar2"><br />
    <input type="button" onclick="elementsForm3();" name="processar3" value="processar3"><br />
    <input type="button" onclick="elementsForm4();" name="processar4" value="processar4"><br />
    <input type="button" onclick="elementsForm5();" name="processar5" value="processar5"><br />
    </form>
	<p id="info"></p>
    </body>
    </html>

T. accedir a un formulari, 3 maneres diferents

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8" />
    <title>Comptar elements</title>
    <meta name="description" content="" />
    <script type="text/javascript">
    //<![CDATA[
    function mostrar() {
		console.log(document.forms[0].action); //amb l'index de la col.lecció forms
		console.log(document.forms['frm_dades_personals'].action); //amb l'index associatiu (conec com es diu el formulari)
		console.log(document.frm_dades_personals.action); //conec com es diu el formulari
	}

    //]]>
    </script>
    </head>
    <body onload="mostrar()">
	<h1>Exemple de formulari</h1>
    <form name="frm_dades_personals" id="formu" action="processar.htm">
    nom: <input type="text" name="nom"><br />
    </form>
    </body>
    </html>