Foros del Web » Programando para Internet » Javascript »

Orden de elementos de formulario

Estas en el tema de Orden de elementos de formulario en el foro de Javascript en Foros del Web. Hola, ocurre algo muy raro. Dependiendo del orden en el que coloque los elementos del formulario, el código no funciona correctamente en IE. El problema ...
  #1 (permalink)  
Antiguo 21/08/2007, 11:34
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Orden de elementos de formulario

Hola, ocurre algo muy raro. Dependiendo del orden en el que coloque los elementos del formulario, el código no funciona correctamente en IE. El problema es que no imprime los tags en el lugar seleccionado.

Código PHP:
<html>
<
head>
<
title></title>
<!
DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<
script langage="javascript" type="text/javascript">
// Comprueba Navegador y Plataforma del pc
var clientPC navigator.userAgent.toLowerCase(); // Coge info cliente
var clientVer parseInt(navigator.appVersion); // Coge versión navegador
var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
var 
is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)
                && (
clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)
                && (
clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));
var 
is_moz 0;
var 
is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
var 
is_mac = (clientPC.indexOf("mac")!=-1);
function 
ListOrdenada() {
var 
txtarea document.getElementById('texto')
var 
opcion= new Array();
var 
i,j
var suma 0;
var 
Cursor 0;
if ((
clientVer >= 4) && is_ie && is_win) {
var 
theSelection document.selection.createRange().text;
 
// IE 
 
if (document.selection) {
  
txtarea.focus();
  var 
Sel document.selection.createRange();
  
Sel.moveStart ('character', -txtarea.value.length);
  var 
SelEmpz Sel.text.length;
  var 
SelLargo txtarea.value.length;
  var 
s1 = (txtarea.value).substring(0,SelEmpz);
  var 
s2 = (txtarea.value).substring(SelEmpz,SelLargo);
  var 
SelFin s1.length theSelection.length// caracteres que deja atrás
  
var s1_selec = (txtarea.value).substring(0,SelFin);
  var 
abre "[list=1]\n";
  var 
cierra "[/LIST=]";
  if (!
theSelection) {
  
alert("texto1 " +s1"\ntexto2 " +s2)
  
txtarea.value =  s1 +  abre cierra s2;
  for (
i=0i<=opcion.lengthi++) {
  
opcion[i]=prompt("Ingresa los elementos de la lista de uno en uno","");
  if ((
opcion[i]== null) || (opcion[i]== "undefined") || (opcion[i] == "") || (opcion[i] ==' ')) {
  
Cursor=  s1.length abre.length suma cierra.length;
  return(
Cursor); 
  }
  
txtarea.value =  s1 +  abre;
  for (
j=0j<=ij++) {
  
txtarea.value +=  "[*]" opcion[j] + "\n"
  }
  
txtarea.value += cierra s2;
  
suma += (opcion[i].length+4);
  }
 }
  if (
theSelection) {
  
txtarea.value =  s1_selec abre;
  
opcion theSelection.split(" ");
  for (
j=0j<opcion.lengthj++) {
  
txtarea.value +=  "[*]" opcion[j] + "\n"
  
suma += (opcion[j].length+4);
  }
  
txtarea.value += cierra s2;
  var 
Cursor =  s1_selec.length abre.length suma cierra.length;
  return(
Cursor); 
  }
 }
}
 
 
 
// Firefox 
 
else if (txtarea.selectionStart ||txtarea.selectionStart == '0'
  
SelEmpz txtarea.selectionStart;
 
}
 
function 
PosicionCursor(pos) {
var 
txtarea document.getElementById('texto')
 if(
txtarea.setSelectionRange) {
  
txtarea.focus();
  
txtarea.setSelectionRange(pos,pos);
 }
 else if (
txtarea.createTextRange) {
  var 
rango txtarea.createTextRange();
  
rango.collapse(true);
  
rango.moveEnd('character'pos);
  
rango.moveStart('character'pos);
  
rango.select();
 }
}
function 
InListaOrd()
{
 
 
PosicionCursor(ListOrdenada());
}
</script>
</head>
<body> 
Así funciona

Código PHP:
<table border="0" cellspacing="0" cellpadding="0">
<
tr>
<
form name="editexto">
<
td><textarea id="texto" name="texto" rows="5" cols="31"></textarea></td>
</
tr>
<
tr>
<
td><input type="button" id="Ordenar" onclick="InListaOrd();" value="LOrdenada" /></td>
</
form>
</
tr>
</
table>
</
body>
</
html

Pero si cambio el orden de los elemento que componen el formulario no funciona

Código PHP:
<table border="0" cellspacing="0" cellpadding="0">
<
tr>
<
form name="editexto">
<
td><input type="button" id="Ordenar" onclick="InListaOrd();" value="LOrdenada" /></td>
</
tr>
<
tr>
<
td><textarea id="texto" name="texto" rows="5" cols="31"></textarea></td>
</
form>
</
tr>
</
table>
</
body>
</
html
¿Cuál puede ser el problema?

Gracias
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Última edición por Adler; 22/08/2007 a las 13:51
  #2 (permalink)  
Antiguo 22/08/2007, 13:56
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Re: Orden de elementos de formulario

Vamos chicos, algo que me oriente sobre el problema. Me estoy volviendo loco, intentando averiguar cuál puede ser.

Gracias
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
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 17:48.