Foros del Web » Programando para Internet » Javascript »

2 errores de validacion W3 por causa de código Js

Estas en el tema de 2 errores de validacion W3 por causa de código Js en el foro de Javascript en Foros del Web. Tengo un buen rato limpiando de errores un script. Sólo me quedan 2 y no logro dar con la solución. Quizás alguien lo pueda identificar: ...
  #1 (permalink)  
Antiguo 30/01/2007, 09:04
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
2 errores de validacion W3 por causa de código Js

Tengo un buen rato limpiando de errores un script. Sólo me quedan 2 y no logro dar con la solución. Quizás alguien lo pueda identificar:

El primer error viene de esta línea:

Código:
var limit_text='<span id="'+theform.toString()+'">'+thelimit+'</span>'
El error de validación HTML que da es:
Cita:
Aviso: '<' + '/' + letter not allowed here

El segundo viene de este pedazo:
Código:
$formlayout->SCRIPT_VALIDATION = "<script>
fv = new Form.Validator(document.mysticform);".$validations."
var report = fv.reporter('InnerHTML');
report.suffix = '_error';
</script>";
y el error que devuelve:
Cita:
Aviso: <script> inserting "type" attribute
Sé que me está avisando que coloque el tipo de script utilizado, pero cuando lo hago la página da error de código, señalándome la línea correspondiente al *.php que contiene ese trozo. Quizás sea alguna de esas comillas, pero no tengo ni la mínima idea. Gracias de antemano.
  #2 (permalink)  
Antiguo 30/01/2007, 09:25
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Re: 2 errores de validacion W3 por causa de código Js

Hola meta

Vayamos por partes, dijo el Jack

Lo primero que comentas ¿ya usas los comentarios html para las áreas de script?

<script type="text/javascript">
<!--
codigo blablá
//-->
</script>

Con eso el validador no debería decirte nada
  #3 (permalink)  
Antiguo 30/01/2007, 09:27
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Re: 2 errores de validacion W3 por causa de código Js

mmmpa lo otro, te da error si usas las barras de escape?

Código:
$formlayout->SCRIPT_VALIDATION = "<script type=\"text/javascript\">
fv = new Form.Validator(document.mysticform);".$validations."
var report = fv.reporter('InnerHTML');
report.suffix = '_error';
</script>";
  #4 (permalink)  
Antiguo 30/01/2007, 09:56
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Re: 2 errores de validacion W3 por causa de código Js

Eso! . Gracias tunait, esa era la solución (no había dicho que se trataba de un archivo .php jeje ). Con esto se elimina el error que más me mortificaba. Sólo queda el primero. Quisiera decir que podría vivir con eso, pero mentiría de la manera más descarada. Ese sí es un .js externo.

Te cuento: se trata de un módulo de formularios que se instala en el Joomla. Se me había ocurrido la idea de traerme ese archivo Js al directorio donde tengo los script de la plantilla y que funcione directo sin el arranque y empalmando los cablecitos, pero si existe una forma de quitar ese error del documento, mejor aún.

Cita:
Iniciado por tunait
Vayamos por partes, dijo el Jack
  #5 (permalink)  
Antiguo 30/01/2007, 10:01
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Re: 2 errores de validacion W3 por causa de código Js

Bueno, al menos uno resuelto

para el primero ... mmm si está en un archivo js ¿qué hace el validador metiéndose adentro?
  #6 (permalink)  
Antiguo 30/01/2007, 10:18
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Re: 2 errores de validacion W3 por causa de código Js

Porque es un módulo que se "embebe" (odio la palabrita jeje) en el index de la plantilla. Los archivos son llamados desde la "cabecera" del módulo, pero como éstos se incluyen dentro del body, entonces los Js también. Es el problema con estos instalables de un click. Entonces, lo que voy a hacer es traerme esos Js al directorio de mi plantilla, los llamo desde el header y de esta forma no se meten en el html. Al mismo tiempo que suprimo las llamadas desde los archivos del módulo. Como te dije, el problema más desquiciante se resolvió con el dato que posteaste. Gracias mi reina.
  #7 (permalink)  
Antiguo 31/01/2007, 03:40
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Re: 2 errores de validacion W3 por causa de código Js

Lo solucioné!! Era el mismo principio que me explicaste, pero esta vez sólo aplicado a la etiqueta de cierre. El archivo Js se volcaba en el HTML porque se le llamaba con un "require_once" en lugar de la etiqueta <script> (Si se ponía con esta última, el script no funcionaba).

Forma incorrecta (Como la tenía antes):
Código:
var limit_text='<span id="'+theform.toString()+'">'+thelimit+'</span>'
Forma correcta:
Código:
var limit_text='<span id="'+theform.toString()+'">'+thelimit+'<\/span>'
Documentación relacionada:
http://www.w3.org/TR/html4/appendix/...html#h-B.3.2.1
http://www.htmlhelp.com/tools/validator/problems.html

Saludos.
  #8 (permalink)  
Antiguo 31/01/2007, 03:58
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: 2 errores de validacion W3 por causa de código Js

Hola:

Lo que me extraña en el código es el método toString()...

Justamente ese método (lo conocía en java y creo que también viene heredado de C) se define (o mejor dicho, se redefine) para no tener que poner toString()... si tienes definido ese método (o no) la salida que genera es la misma que si no pones "esa coletilla"

o sea:

Código:
var limit_text='<span id="' + theform.toString() + '">' + thelimit + '<\/span>'
es igual a
Código:
var limit_text='<span id="' + theform + '">' + thelimit + '<\/span>'
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 31/01/2007, 04:21
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Re: 2 errores de validacion W3 por causa de código Js

El script tiene la función de conteo regresivo de caracteres a medida que uno escribe ¿tendrá algo que ver?. De todas formas te pego el contenido completo del mismo:

Código PHP:
<script language="javascript" type="text/javascript">

/*
Form field Limiter script- By Dynamic Drive
For full source code and more DHTML scripts, visit http://www.dynamicdrive.com
This credit MUST stay intact for use
*/

var ns6=document.getElementById&&!document.all

function restrictinput(maxlength,e,placeholder){
    if (
window.event&&event.srcElement.value.length>=maxlength)
        return 
false
    
else if (e.target&&e.target==eval(placeholder)&&e.target.value.length>=maxlength){
        var 
pressedkey=/[a-zA-Z0-9.,/]/ //detect alphanumeric keys
            
if (pressedkey.test(String.fromCharCode(e.which)))
                
e.stopPropagation()
    }
}

function 
countlimit(maxlength,e,placeholder){
    var 
theform=eval(placeholder)
    var 
lengthleft=maxlength-theform.value.length
    
var placeholderobj=document.alldocument.all[placeholder] : document.getElementById(placeholder)
    if (
window.event||e.target&&e.target==eval(placeholder)){
        if (
lengthleft<0)
            
theform.value=theform.value.substring(0,maxlength)
            
placeholderobj.innerHTML=lengthleft
    
}
}


function 
displaylimit(thenametheidthelimit){
    var 
theform=theid!=""document.getElementById(theid) : thename
    
var limit_text='<span id="'+theform.toString()+'">'+thelimit+'<\/span>'
    
if (document.all||ns6)
        
document.write(limit_text)
    if (
document.all){
        eval(
theform).onkeypress=function(){ return restrictinput(thelimit,event,theform)}
        eval(
theform).onkeyup=function(){ countlimit(thelimit,event,theform)}
    }
    else if (
ns6){
        
document.body.addEventListener('keypress', function(event) { restrictinput(thelimit,event,theform) }, true); 
        
document.body.addEventListener('keyup', function(event) { countlimit(thelimit,event,theform) }, true); 
    }
}

</script> 
  #10 (permalink)  
Antiguo 31/01/2007, 04:26
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Re: 2 errores de validacion W3 por causa de código Js

Adicionalmente te cuento que en mis búsquedas por Google escribía algunos pedazos de código (para ver los distintos casos que se aplicaban y compararlos con el mío). La mayoría de las líneas que empezaban con ese "var limit_text=" tenían incluido ese "toString()". Eso como dato.

Saludos.
  #11 (permalink)  
Antiguo 31/01/2007, 05:34
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: 2 errores de validacion W3 por causa de código Js

Hola otra vez:

La verdad es que el código sigue confundiéndome (aunque si te funciona, ¡estupendo!), además, solo son apuntes teóricos...

El uso de toString() es para convertir objetos a representaciones de texto. Si hacemos una alerta de un formulario, seguramente se verá "[Object]" en explorer y en otros navegadores dependerá del tipo de Objeto HTMLFormObject (o algo parecido) mostrará mozilla... y no sé con Opera que se verá...

Hace un tiempo dí una respuesta de como mostrar la fecha de otra manera, y no encuentro el post, pero si se hace una definición así:

Código:
Date.prototype.toString = function() {
return this.getDate() + "/" + this.getMonth() + "/" + this.getFullYear();
}
verás una representación distinta a las habituales (sin necesidad de poner ese toString()...)
Creo que una buena razón para su uso puede ser una concatenación de números:

n = 1;
cadena = 1234 + n.toString();
numero = 1234 + n;

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:02.