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 = 0; ind < palab.length; ind++)
{
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 = 0; ind < palab_no_per.length; ind++)
{
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 = " "
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"> </div>
<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> </p>
<p align="center"><a href="http://www.panuweb.com.ar">www.panuweb.com.ar</a></p>
<p> </p>
</form>
</body>
</html>
Gracias