Ver Mensaje Individual
  #7 (permalink)  
Antiguo 27/06/2008, 15:52
Mauricio Panuncio
 
Fecha de Ingreso: mayo-2007
Ubicación: Argentina
Mensajes: 48
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Palabras Claves y Textarea

Hola Gracias a todos por la ayuda pero se me complica un poco, ya que no tengo muchos conocimientos. No puedo entender los script que me recomendaron ni como aplicarlo al mio. por ahora voy a dejar de lado el iframe y lo que quiero conseguir es que cuando se quiera editar la sentencia escrita no me lleve el cursor hacia el final.

Me pueden ayudar???

acá dejo un código nuevo que se puede ver en la siguiente direccion prueba.htm

Editado 1: Utilizo un bucle para detectar las palabras.
Editado 2: Agregué mas palabras, y utilizo un buble para mostrarlas en la parte de abajo.
Editado 3: Adapte la funcion ponCursorEnPos() que me recomendó derkenuke

Código PHP:
<html>
<
head>
<
title>Ejecutar codigo SQL</title>
<
script language="javascript">

palab = new Array( "version","current_date","now","user","select","from","where","and","show","databases","use","create","tables",
     
"table","database","describe","insert","into","update","set","or","distinct","order by","desc","binary","null",
     
"is null","is not null","like""not like""not regexp","regexp","rlike","not rlike","count","group by","drop",
     
"delete""truncate");
     
palab_no_per = new Array ("drop","delete""truncate","user","use","create");
function 
palabras(consu)

 var 
consu2 consu.value;
 var 
ind;
 
 for (
ind 0ind palab.lengthind++)
 {
  var 
re = new RegExp("\\b"+palab[ind]+"\\b""gi");
  
consu2 consu2.replace(re,palab[ind].toUpperCase());
 }
 
consu.value consu2
  
 ponCursorEnPos
(6)
}
function 
valida(consu)
{
 
inicio "No se puede utilizar el Comando ";
 
consu2 consu.value
 resul 
false
 
var ind;
 for (
ind 0ind palab_no_per.lengthind++)
 {
  var 
re = new RegExp("\\b"+palab_no_per[ind]+"\\b""gi");
  if((
consu2.search(re)) != -1)
  {
   
consu.style.background "#DD0000";
   
consu.style.color "#FFFFFF";
   
consu.style.border "1px solid #aaaaaa";
   
document.all.error_sel.innerHTML inicio palab_no_per[ind].toUpperCase(); 
   
document.forms.sql.boton.disabled true;
   
resul true;
  }
 }
 
 if (!
resul)
 {
  
consu.style.background "#FFFFFF";
  
consu.style.color "#0000FF";
  
consu.style.border "1px solid #aaaaaa";
  
document.all.error_sel.innerHTML "&nbsp;"
  
document.forms.sql.boton.disabled false;
 }
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
<!--
body,td,th {
 font-family: Verdana, Arial, Helvetica, sans-serif;
 font-size: 10pt;
 color: #000000;
}
body {
 background-color: #FFFFCC;
 margin-left: 5px;
 margin-top: 5px;
 margin-right: 5px;
 margin-bottom: 5px;
}
#error_sel {
 font-family: Verdana, Arial, Helvetica, sans-serif;
 font-size: 12pt;
 font-weight: bold;
 color: #FF0000;
 text-decoration: none;
 text-align: center;
 vertical-align: middle;
}
-->
</style>
</head>
<body>
 
<form action="consulta.php" method="post" name="sql">
 <p>Ejemplo: Resaltar Palabras Claves en un TextArea</p>
 <p>
  <textarea  cols="50" name="consulta"
  onClick="escribe(getCursorPos(this).start );"
  onBlur="/*valida(this); palabras(this);*/"
  onFocus="/*valida(this); palabras(this);*/"
  onKeyPress="valida(this); palabras(this);"
  rows="13" wrap="virtual" style="width:100%; height:150px;">lola que es esto</textarea>
  <br>
 </p>
 <div id="error_sel">&nbsp;</div>&nbsp;
 <p>
  <input type="button" onClick="alert('Enviaste el Formulario')" name="boton" id="boton" value="ENVIAR" class=boton-aceptar>
</p>
 
<script type="text/javascript"> 
<!-- 

// escribir en el documento una ristra (x)html fuera de tiempo de ejecución. 
function escribe(q,sinBR) { 
    var elDIV = document.createElement("DIV"); 
    if(q==undefined) q=""; 
    if(!sinBR) q+="<br/>"; 
    elDIV.innerHTML = q; 
    for(var a=0; elDIV.childNodes.length>a; a++) { 
        document.body.appendChild( elDIV.childNodes[a].cloneNode(true) ); 
    } 

// document.getElementById abreviado 
function $(x) { return document.getElementById(x); } 
var laCaja = $("consulta"); 
/******** 
    getCursorPos: Me devuelve la posición de inicio y fin de la selección o la posición del | en el campo 
********/ 
function getCursorPos(campo) { 
    if (document.selection) {// IE Support 
        campo.focus();                                        // Set focus on the element 
        var oSel = document.selection.createRange();        // To get cursor position, get empty selection range 
        oSel.moveStart('character', -campo.value.length);    // Move selection start to 0 position 
        campo.selectionEnd = oSel.text.length;                    // The caret position is selection length 
        oSel.setEndPoint('EndToStart', document.selection.createRange() ); 
        campo.selectionStart = oSel.text.length; 
    } 
    return { start: campo.selectionStart, end: campo.selectionEnd }; 
}   
/******** 
    COLOCACIÓN DEL CURSOR: Da el foco a la caja colocando el cursor de inserción en la posición pos 
********/ 
function ponCursorEnPos(pos){  
    if(typeof document.selection != 'undefined' && document.selection){        //método IE 
        var tex=laCaja.value; 
        laCaja.value='';  
        laCaja.focus(); 
        var str = document.selection.createRange();  
        laCaja.value=tex; 
        str.move("character", pos);  
        str.moveEnd("character", 0);  
        str.select(); 
    } 
    else if(typeof laCaja.selectionStart != 'undefined'){                    //método estándar 
        laCaja.setSelectionRange(pos,pos);  
        forzar_focus();            //debería ser focus(), pero nos salta el evento y no queremos 
    } 
}  
// --> 
</script> 
 

 <p>Palabras Claves Permitidas: 
 <script language="javascript">
  var ind;
  var ind2;
  var val;
  for (ind = 0; ind < palab.length; ind++)
  {
   for (ind2 = 0; ind2 < palab_no_per.length; ind2++)
   {
    if (palab[ind] == palab_no_per[ind2])
    {val = false;break;
    }else{val = true;}
   }
   if (val){document.write(palab[ind].toUpperCase() + ", ");}
  }
 </script>
</p>
 <p>Palabras Claves NO Permitidas:
 <script language="javascript">
  var ind2;
  for (ind2 = 0; ind2 < palab_no_per.length; ind2++)
  {
   document.write(palab_no_per[ind2].toUpperCase() + ", ");
  }
 </script>
  </p>
 <p>&nbsp;</p>
 <p align="center"><a href="http://www.panuweb.com.ar">www.panuweb.com.ar</a></p>
 <p>&nbsp;</p>
</form>
</body>
</html> 
Gracias

Última edición por Mauricio Panuncio; 02/07/2008 a las 08:41