Foros del Web » Programando para Internet » Javascript »

Problema con un image y un form

Estas en el tema de Problema con un image y un form en el foro de Javascript en Foros del Web. ¡Hola a todos! Estoy intentando hacer un editor de noticias que represente el resultado del texto con formato en tiempo real (sin un botón de ...
  #1 (permalink)  
Antiguo 08/08/2005, 07:43
 
Fecha de Ingreso: agosto-2004
Mensajes: 51
Antigüedad: 20 años
Puntos: 0
Problema con un image y un form

¡Hola a todos!

Estoy intentando hacer un editor de noticias que represente el resultado del texto con formato en tiempo real (sin un botón de previsualización) Para que nos entendamos, es algo muy parecido a la página en la que se escribe un nuevo tema (en la que estoy ahora) o para responder.

Eso sí, el mío es bastante más sencillo que este....

El caso es que tengo un problema con los botones. Si uso input de tipo botón, la cosa funciona, pero si uso input de tipo imagen, me hace una cosa muy rara, que es llamar a la página otra vez pasándole las coordenadas del ratón en la llamada. Esto lo hace si tengo el input dentro de la etiqueta form, porque, si lo saco, funciona bien.

Como creo que me he explicado fatal y el comportamiento es muy raro, os dejo un código resumido para que veáis el funcionamiento.

Código PHP:
<html>
<
head>
<
script language="JavaScript" type="text/JavaScript">
 <!--
 function 
iniciar() {
    
txt document.getElementById('texto');
    
res document.getElementById('resultado');
}
 
function 
aplicarEstilo(estilo) {
    var 
valor txt.value.substring(txt.selectionStarttxt.selectionEnd);
    var 
valorInicial "<b>";
    var 
valorFinal "</b>";
    if (
document.selection) {
        
txt.focus();
        
sel document.selection.createRange();
        
sel.text valor;
    } else if (
txt.selectionStart || txt.selectionStart == '0') {
        
// En caso de MOZILLA/NETSCAPE
        
var inicio txt.selectionStart;
        var 
fin    txt.selectionEnd;
        switch (
estilo) {
            case 
"bold":
                
valorInicial "<b>";
                
valorFinal   "</b>";
                break;
            case 
"italic":
                
valorInicial "<i>";
                
valorFinal   "</i>";
                break;
        }
        
valor valorInicial valor valorFinal;
        var 
cursor inicio valor.length;

        
txt.value txt.value.substring(0inicio)
                    + 
valor
                    
txt.value.substring(fintxt.value.length);

        
txt.selectionStart cursor;
        
txt.selectionEnd cursor;
    } else {
        
txt.value += valor;
    } 
    
res.innerHTML txt.value;    
    
txt.focus();
}

function 
ejcribir() {
    
res.innerHTML txt.value;    
}

//-->
</script>
</head>

<body onLoad="iniciar()">
<table width="50%">
<form>  <!-- Si pongo aquí el form no funciona la imagen -->
    <tr>
        <td>
            <input type="image" src="http://www.forosdelweb.com/images/editor/bold.gif" 
            onClick="aplicarEstilo('bold')">
        </td>    
    </tr>
<!-- <form> Si lo pongo aquí sí me funciona -->
    <tr>
        <td>
            <input type="button" onClick="aplicarEstilo('italic')" value="Cursiva">
        </td>
    </tr>
    <tr>
        <td>
            <textarea id="texto" cols="50" rows="7" onKeyUp="ejcribir()"></textarea>
        </td>
    </tr>
    <tr>
        <td>
            <span id="resultado"></span>
        </td>
    </tr>
</form>
</table>
</body>
</html> 
Como veréis, al pulsar en el botón, se pondrá en cursiva el texto seleccionado, mientras que, al pulsar sobre la imagen, se volverá a llamar a la página pasándole como parámetros las coordenadas del ratón.

Si alguien sabe qué puede estar ocurriendo, me quitaría un gran quebradero de cabeza, porque no tengo ni idea de por qué sucede esto.

IMPORTANTE: el formateo del texto sólo funciona bien con FIREFOX, aunque el comportamiento extraño lo hace también con el explorer.

Muchas gracias.
  #2 (permalink)  
Antiguo 08/08/2005, 09:42
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 5 meses
Puntos: 1284
Hola larariro:

Sencillamente los botones de tipo image son a la vez submit... Las posibilidades son: usar un tag button, o un input button y aplicarle estilos para tu presentación, o usar una imagen (simplemente un tag img)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 09/08/2005, 03:50
 
Fecha de Ingreso: agosto-2004
Mensajes: 51
Antigüedad: 20 años
Puntos: 0
Vaya, pues sí que era fácil de solucionar...

El caso es que no sé qué eventos puedo utilizar con cada objeto, pero bueno, los voy aprendiendo a base de respuestas como esta.

Al final he utilizado imágenes sin más...

Muchas gracias, caricatos.
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 13:19.