Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/07/2009, 14:45
Avatar de Adler
Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Fijar valor en textbox

Hola

Ahora mismo no tengo acceso a mi serve por problemas técnicos, así que te he montado el script para solo tengas que copiarlo, alguna función la he deshabilitado para que te funcione. Pruebalo en FF, no se como se comporta en IE

Código javascript:
Ver original
  1. <html xmlns="http://www.w3.org/1999/xhtml"lang="es" xml:lang="es">
  2. <head>
  3. <STYLE TYPE="text/css">
  4. #contenedor div.seleccionado {font-weight:bold; background:#F0F0F0; color:#FF6600;}
  5. #contenedor div.deseleccionado {background:#FFFFFF; color:#000000;}
  6. #contenedor div{font:11px verdana; color:#000000; cursor:pointer; text-align:left; padding:2px 5px;}
  7.  
  8. .capa {
  9. background: #FFFFFF;
  10. border:1px solid rgb(120,120,120);
  11. width: 144px;
  12. _width: 146px;
  13. text-align: left;
  14. position: absolute;
  15. top: 30px;
  16. _top:38px;
  17. left: 117px;
  18. _left: 119px;
  19. }
  20. </STYLE>
  21. <script type="text/javascript">
  22. var SelUsuario = {
  23.  
  24. Evento: function (elemento,nomevento,funcion) {
  25.   if (elemento.attachEvent)
  26.   {
  27.       var f=function(){
  28.         funcion.call(elemento,window.event);
  29.     }
  30.     elemento.attachEvent('on'+nomevento,f);
  31.     return true;
  32.   }
  33.   else  
  34.     if (elemento.addEventListener)
  35.     {
  36.       elemento.addEventListener(nomevento,funcion,false);
  37.       return true;
  38.     }
  39.     else
  40.       return false;
  41. },
  42.  
  43.  
  44.  
  45. init: function(){
  46. var elem1 = document.getElementById("txt");
  47. var elem2 = document.getElementById("contenedor");
  48.         SelUsuario.Evento(elem1, 'keyup', SelUsuario.Empieza);
  49.         SelUsuario.Evento(elem2, 'mouseover', SelUsuario.Seleccionar);
  50.         SelUsuario.Evento(elem1, 'keydown', SelUsuario.Pegar2);
  51.         //SelUsuario.Evento(window, 'click', SelUsuario.Cerrar);
  52.     },
  53.  
  54.  
  55.  
  56.  
  57. creaAjax: function (){
  58.     var ajaxs = ["Msxml2.XMLHTTP","Msxml2.XMLHTTP.4.0","Msxml2.XMLH TTP.5.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];
  59.     var ajax = false;
  60.     for(var i=0 ; !ajax && i<ajaxs.length ; i++){
  61.         try{
  62.             ajax = new ActiveXObject(ajaxs[i]);   // Internet Explorer
  63.         }
  64.         catch(e) {
  65.             ajax = false;
  66.         }
  67.     }
  68.     if(!ajax && typeof XMLHttpRequest!='undefined') {
  69.         ajax = new XMLHttpRequest();  // Firefox, Opera 8.0+, Safari
  70.     }
  71.     return ajax;
  72. },
  73.  
  74.  
  75.  
  76. Empieza: function (ev) {
  77. var str = document.getElementById("txt").value;
  78. var obj = document.getElementById("contenedor");
  79. var keyCode = document.layers ? ev.which : document.all ? event.keyCode : document.getElementById ? ev.keyCode : 0;
  80.  
  81.  if (keyCode == 40) {
  82. //alert("flecha abajo")
  83.     SelUsuario.BajaOpt ()
  84.  } else if (keyCode == 38) {
  85. //alert("flecha arriba")
  86.     SelUsuario.SubeOpt ()
  87.  
  88. } else {
  89.  
  90.  
  91.  
  92.  
  93. //var str = document.getElementById("txt").value;
  94. //var obj = document.getElementById("contenedor");
  95.     if (str.length < 2) {
  96.         //obj.innerHTML = "";
  97.         if (obj.style.display == "none")  obj.style.display= "none";
  98.                 else obj.style.display= "none";
  99.         return;
  100.     }
  101.     ajax = SelUsuario.creaAjax()
  102.     if (ajax==null) {
  103.         alert ("Tu navegador no soporta Ajax");
  104.         return;
  105.      }
  106. var url="SelecUsuarios.asp?q="+escape(str);
  107.     ajax.open("GET",url,true);
  108.     ajax.onreadystatechange = SelUsuario.Despliega;
  109.     //ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  110.             ajax.send(null);
  111.             return
  112. }
  113. },
  114.  
  115.  
  116. Despliega: function () {
  117. var obj = document.getElementById("contenedor");
  118.     if (ajax.readyState==4) {
  119.         if (ajax.status==200) {
  120.             obj.innerHTML = unescape(ajax.responseText);
  121.  
  122.             }else {
  123.  
  124.                                     alert ("Error: " + ajax.status);
  125.             return;
  126.         }
  127.     if (obj.style.display == "none")  obj.style.display= "block";
  128.     }
  129. },
  130.  
  131.  
  132.  
  133. Seleccionar: function () {
  134. var ref = document.getElementById(this.id).getElementsByTagName('DIV');
  135. //alert(ref);
  136. for (var i = 0; i < ref.length; i++) {
  137.  
  138. SelUsuario.Evento(ref[i], 'click', function() {
  139. SelUsuario.Pegar(this.id);
  140. //alert(this.id);
  141. })  
  142.  
  143.  
  144. SelUsuario.Evento(ref[i], 'mouseover',  function() {
  145. SelUsuario.Marcar(this.id);
  146. })
  147.  
  148. //SelUsuario.Evento(ref[i], 'mouseout',  function() {
  149. //SelUsuario.DesMarcar(this.id);
  150. //})
  151. }
  152. },
  153.  
  154.  
  155.  
  156. Pegar: function (valor) {
  157. //alert("el val " +valor);
  158. var obj = document.getElementById("contenedor")
  159.         document.getElementById("txt").value = valor;
  160.                 obj.style.display= "none";     
  161. },
  162.  
  163.  
  164. Pegar2: function (ev) {
  165. var obj = document.getElementById("contenedor")
  166. var ref = obj.getElementsByTagName('DIV');
  167. var keyCode = document.layers ? ev.which : document.all ? event.keyCode : document.getElementById ? ev.keyCode : 0;
  168.  
  169. // enter 13 tab 9
  170. if (keyCode == 13) {
  171. //alert("enter")
  172.  
  173. for (var i = 0; i <= ref.length-1; i++) {
  174. if (ref[i].className == "seleccionado") {
  175.  
  176.         document.getElementById("txt").value = ref[i].id;
  177. break;
  178. alert(ref[i].id);
  179.  
  180.                 obj.style.display= "none";
  181.  
  182. }
  183.  
  184. }
  185.  
  186. } else if (keyCode == 9) {
  187. alert("Tab")
  188. }  
  189. },
  190.  
  191.  
  192.  
  193.  
  194.  
  195. BajaOpt: function() {
  196. var ref = document.getElementById("contenedor").getElementsByTagName('DIV');
  197. for (var i = 0; i <= ref.length-1; i++) {
  198. if (ref[i].className == "seleccionado") {
  199. ref[i].className = "deseleccionado";
  200. if (i < ref.length-1){
  201. i++;
  202. }else{
  203. i = 0;
  204. }
  205. //alert("Largo: " +(ref.length-1)+ " Valor: " +i);
  206. ref[i].className = "seleccionado"
  207. }
  208. }
  209. },
  210.  
  211.  
  212. SubeOpt: function() {
  213. var ref = document.getElementById("contenedor").getElementsByTagName('DIV');
  214. for (var i = 0; i <= ref.length-1; i++) {
  215. if (ref[i].className == "seleccionado") {
  216. ref[i].className = "deseleccionado";
  217. if (i < ref.length && i > 0){
  218. i--;
  219. }else{
  220. i = ref.length-1;
  221. }
  222. //alert("Largo: " +(ref.length-1)+ " Valor: " +i);
  223. ref[i].className = "seleccionado"
  224. }
  225. }
  226. },
  227.  
  228.  
  229. Marcar: function (id) {
  230. var selecionado = document.getElementById(id);
  231. var ref = document.getElementById("contenedor").getElementsByTagName('DIV');
  232. for (var i = 0; i <= ref.length-1; i++) {
  233. if (ref[i].id != id) {
  234. ref[i].className = "deseleccionado";
  235. selecionado.className = "seleccionado";
  236. }
  237. }
  238. }
  239.  
  240.  
  241. //Cerrar: function () {
  242. //var obj = document.getElementById("contenedor")
  243.   //            obj.style.display= "none"; 
  244.    
  245. //}
  246. }
  247.  
  248.  
  249. SelUsuario.Evento(window, 'load', SelUsuario.init,false);
  250. </script>
  251.  </head>
  252. <body>
  253. Nombre Usuario: <input type="text" id="txt" value="" autocomplete="off" />
  254. <div class="vink" style="margin:5px 0px 0px 10px">
  255. <div id="contenedor" class="capa">
  256. <div id="a" class="">a</div>
  257. <div id="b" class="seleccionado">b</div>
  258. <div id="c" class="">c</div>
  259. <div id="d" class="">d</div>
  260. </div>
  261. </div>
  262. </body>
  263. </html>

Como comentaba anteriormente el problema está en que el campo de texto no mantiene el valor.
Para que se asemeje a lo que me ocurre, el text ha de tener el foco, presionas enter y el valor de la opción seleccionada, ha de imprimirse en text.

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;" />