P: Cómo puedo validar el ISBN de un libro?
R:Llegando a forosdelweb a partir de ahora, porque en google no he encontrado nada y ha salido esto de mi cabecita:
Código:
<script language="javascript">
function comprueba()
{
if (document.form2.isbn.value!="x-xxxx-xxxx-x")
{
var salida, plantilla;
var texto = document.form2.isbn.value;
var estructura=true;
plantilla = new RegExp("^[0-9]{1,5}-[0-9]{1,7}-[0-9]{1,6}-[0-9xX]$");
salida = texto.match(plantilla);
if (salida==null)
{
estructura=false;
}
if (texto.length!=13)
{
estructura=false;
}
if (!estructura)
{
alert("La estructura del ISBN introducido no coincide con el estándar ISBN\n\nEjemplo: 0-8436-1072-7\n\n El estándar indica esta estructura:\nde 1 a 5 números\nguión\nde 1 a 7 números\nguión\nde 1 a 6 números\nguión\ndígito de control. de 0 a 9 o \"X\" si el dígito es 10\nLa longitud total debe ser de 10 dígitos, más los tres guiones.")
}
else
{
tt2 = texto.split("-");
grupo1=new String(tt2[0]);
grupo2=new String(tt2[1]);
grupo3=new String(tt2[2]);
grupo4=new String(tt2[3]);
total= new Number(0);
ponderacion=new Number(10);
for (j= 0; j <grupo1.length; j++)
{
total+=(parseInt(grupo1.charAt(j))*ponderacion);
--ponderacion;
}
for (j= 0; j <grupo2.length; j++)
{
total+=(parseInt(grupo2.charAt(j))*ponderacion);
--ponderacion;
}
for (j= 0; j <grupo3.length; j++)
{
total+=(parseInt(grupo3.charAt(j))*ponderacion);
--ponderacion;
}
if(grupo4=="X" || grupo4=="x")
{
grupo4="10";
}
resto=(total+parseInt(grupo4))%11;
if (resto==0)
{
//document.form2.submit();
alert("ISBN Correcto");
}
else
{
alert("El dígito de control (último numero de la serie) no es correcto. ISBN inválido.");
}
}
}
}</script>
<form name="form2">
<input type="text" value="x-xxxx-xxxx-x" maxlength="13"><input type="button" onClick="javascript:comprueba();" value="buscar">
</form>
Para el que se quiera empapar de cómo se curra con los ISBN y los EAN, que se baje este pdf de mi página. un buen documento, si señor:
ISBN-EAN.rar(366K)