Hola
tengo estas dos funciones una guarda las cookies de los input y la otra los muestra.
al darle al boton guardar se guardan en las cookies y al darle al boton recuperardatos se recuperarn y se rellenan los input con los valores. ?como lo haria en la cookie del select? adjunto el codigo
<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="formulario.js" type="text/javascript"></script>
<link rel="stylesheet" href="./formulario.css" type="text/css">
</head>
<body>
<form name="formulario" method="post" action="ejemplo.php" onsubmit =" return validaSelec(this.value) && validaCheckbox(this.value)" >
Nombre Producto: <input type ="text" id="texto" name="nombre" placeholder="Nombre" size ="30" onkeyup="validarNombre(this.value)" /> <br/>
Codigo de Barras:<input type="text" id="codigo" name="codigo" placeholder="codigo" size="15" onkeyup="validaCodigo(this.value)" /> <br/>
Caducidad dia : <input type="text" id="dia" name="dia" placeholder="Dia" size="5" onkeyup="validarFecha(this.value)"/>
mes :<input type ="text" name="mes" id="mes" placeholder ="Mes" size ="5" onkeyup= "validarFecha(this.value)"/>
año :<input type="text" name="año" id="anio" placeholder="Año" size="5" onkeyup="validarFecha(this.value)"/> <br/>
<p>
Oferta :
<select id="ofertas" name ="ofertas">
<option value=""> Selecciona una oferta</option>
<option value="1">Normal</option>
<option value="2">2x1</option>
<option value="3">20%</option>
<option value="4">10%</option>
</select>
</p>
<div id ="varios">
Congelado <input type="checkbox" name ="alimentos" id ="checkbox1" value="Congelado"/>
Fruta <input type="checkbox" name = "alimentos" id="checkbox2" value="Fruta"/>
Snack<input type="checkbox" name ="alimentos" id="checkbox3" value="Snack"/><br/>
</div>
<input class="boton" type ="submit" name="registrate" value="Registrate" />
<input class="boton" type="button" name="limpiar" value="Limpia el formulario"/>
<input class="boton" type="button" name="guardar " value="Guardar datos" onclick="guardaValor()"/>
<input class="boton" type="button" name="recuperar" value="Recuperar datos" onclick="obtenValor()" /><br/>
<textarea id ="area" rows="2" cols="50">
TextArea con la información del formulario
</textarea>
</form>
</body>
</html>
/*
ejercicio 3
Controla que si no se selecciona algún tipo de alimento
(Congelado, Fruta o Snak) no se envíe el formulario al clicar en Regístrate
*/
function validaCheckbox() {
var todos = document.getElementById("varios").children;//hago una funcion y con un bucle
//recorre todos los elementos
//por orden y etiqueta
for (var x = 0; x < todos.length; x++) {
if (todos[x].checked) {
return true;
} else {
alert("Al menos debe marcar congelado o fruta o snack");
return false;
}
}
setCookie("checkCookie", todos, 50);
}
/*Ejercicio 4
* 4. Controla que cada vez que el usuario escribe una letra en un input se
* muestre un mensaje en el TextArea con el valor del input y si su valor es válido.
/*escribe una letra en un input se muestre un mensaje en el TextArea con el valor del input */
/* b. InputNombre no puede empezar por un número y debe contener entre 3 y 20
* caracteres.*/
function validarNombre(valor) {
if (valor.length >= 3 && valor.length <= 20)
{
var re = /^[^0-9]/;
if (valor[0].match(re))
{
document.getElementById("area").innerHTML = valor; //escribe el valor obtenido del input en el textarea//
} else {
document.getElementById("area").innerHTML = "No puede empezar por un numero";
}
} else {
document.getElementById("area").innerHTML = "Tiene que tener entre 3 y 20 caracteres";
}
setCookie("nombreCookie", valor, 30); //creo la cookie para el input del nombre//
}
/*c. InputCodigo debe tener 13 números, ninguna letra (puedes utilizar una
expresión regular para validar).*/
function validaCodigo(valor) {
if (/\b\d{13}\b/.test(valor)) { //utilizo epresion regular //
document.getElementById("area").innerHTML = valor;
} else {
document.getElementById("area").innerHTML = "Solo pueden ser 13 numeros";
}
setCookie("codigoCookie", valor, 50);
}
/*d. InputDia , inputMes y inputAno deben formar una fecha válida.*/
function validarFecha() {
var day = document.getElementById("dia").value;
setCookie("diaCookie", day, 50);
var month = document.getElementById("mes").value;
setCookie("mesCookie", month, 50);
var year = document.getElementById("anio").value;
setCookie("anioCookie", year, 50);
var dteDate;
month = month - 1;
dteDate = new Date(year, month, day);
return ((day === dteDate.getDate()) && (month === dteDate.getMonth()) && (year === dteDate.getFullYear()));
}
function validaSelec() {
indice = document.getElementById("ofertas").selectedIndex;
if (indice === null || indice === 0) {
alert("debe seleccionar una oferta");
return false;
}
}
/*
* 5. Programa con JavaScript que al clicar sobre Guardar Datos se guarden todos
los datos de los inputs en una cookie para cada input. Pej: para el input inputNombre
crea una cookie que guarde su valor, para el input inputCodigo crea otra cookie con su valor, etc...)
*
*/
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname + "=" + cvalue + "; " + expires;
}
function guardaValor() {
var valor = document.getElementById("texto").value; //guardo el valor del input nombre en una variable//
var codigo = document.getElementById("codigo").value;
var day = document.getElementById("dia").value;
var month = document.getElementById("mes").value;
var year = document.getElementById("anio").value;
var todos = document.getElementById("varios").children;
for (x = 0; x < todos.length; x++) { //uso un bucle para recoorer todos los checkbox//
if (todos[x].nodeName === 'INPUT' && todos[x].checked === true) {
setCookie("checkCookie", todos[x].value, 50);
break;
}
}
setCookie("nombreCookie", valor, 30);
setCookie("codigoCookie", codigo, 50);
setCookie("diaCookie", day, 50);
setCookie("mesCookie", month, 50);
setCookie("anioCookie", year, 50);
}
/* 6. Programa con JavaScript que al clicar sobre Recupera Datos se sustituya
* el valor de los inputs por el valor almacenado en su correspondiente cookie.
*
*/
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) === ' ') {
c = c.substring(1);
}
if (c.indexOf(name) === 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function obtenValor() {
document.getElementById("texto").value = getCookie("nombreCookie"); //obtengo el valor de la cookie guardada//
document.getElementById("codigo").value = getCookie("codigoCookie");
document.getElementById("dia").value = getCookie("diaCookie");
document.getElementById("mes").value = getCookie("mesCookie");
document.getElementById("anio").value = getCookie("anioCookie");
var todos_checkbox = document.getElementById("varios").children; //uso un for para obetner el valor de la cookie guardada del checkbox//
for (x = 0; x < todos_checkbox.length; x++) {
if (todos_checkbox[x].value === getCookie("checkCookie")) {
todos_checkbox[x].checked = true;
break;
}
}
Y otra duda que tengo , es que si no se selecciona ningun checkbok no se puede enviar el formulario, lo he intentado pero no hay manera.
gracias