Hola a todos, tengo un problema, me gustaría modificar el valor del textbox que tenga el foco.
¿Hay alguna función que me permita obtener el elemento actual que tenga el foco?
| ||||
Respuesta: Cambiar valor del textbox que tenga el foco no he visto mucha información al respecto, quizás te ayude este hilo: http://stackoverflow.com/questions/4...ment-has-focus
__________________ ¡Por favor!: usa el highlight para mostrar código El que busca, encuentra... |
| ||||
Respuesta: Cambiar valor del textbox que tenga el foco Veamos, si recorres todos los input y les asignas el evento onfocus, luego puedes comprobar cuál es el input que tiene el foco en ese momento. Si le pasas event como argumento a la función, puedes usar la propiedad target, que es la que almacena el objeto afectado por el evento. Como de costumbre, hay problemas de compatibilidad, así que hay varias propiedades, todo esto lo puedes ver mejor en quirksmode porque ahora mismo no me acuerdo de mucho Saludos (:
__________________ " Getting older’s not been on my plans but it’s never late, it’s never late enough for me to stay. " Cigarettes - Russian Red |
| |||
Respuesta: Cambiar valor del textbox que tenga el foco Las páginas que modifico no son mías, es una extensión para Chrome, por lo que muchas tendrán ya asignados elementos onfocus, por lo que no podría reemplazarlos sino añadir al final de cada una la función que quiero (eso es fácil), pero claro, unas tienen onfocus="funcion();" y otras onfocus="funcion()", por lo que tendría que detectar si acaban ya en ";" y como las webs son dinámicas, aparecen y desaparecen nuevos elementos sin recargarlas, tendría que añadir mi función mediante un setInterval, lo que me llevaría a también detectar si ya he añadido mi función antes. ¿Esa es la forma más sencilla o se les ocurre otras? ¿Cómo podría recorrer todo el documento en busca de inputs de texto? La idea de cómo sería la función la he sacado de este post de JavierB. Saludos. EDITO: En vez de un setInterval creo que sería mejor añadir también al onfocus la función que recorre el documento en busca de inputs de texto. EDITO 2: Como bien dije antes las páginas son dinámicas, así que no me basta con que mi función se ejecute al principio y después cuando cada texto obtenga el foco, ya que puede que al principio de carga no haya ningún input de texto y la función no se vuelva a ejecutar, así que tengo que recurrir a mi primera idea, el setInterval, o bien puedo agregar al body el evento onclick para que ejecute mi función ¿qué me recomiendan? Ya sé que puede que haya un input con el foco ya definido y el usuario no tenga que hacer clic para escribir en él, pero cuando quiero que realmente funcione es cuando el usuario haga clic derecho para usar el menú contextual ¿ustedes saben si existe un evento estándar tipo onrightclic? Es que si existe que me quito de rollos como el setInterval o el body.onload con un onrightclic me bastaría. ¿Si el usuario tiene el foco y el ratón encima de ese input no sirve el this.value? ;) Última edición por zant95; 13/07/2011 a las 20:44 |
| ||||
Respuesta: Cambiar valor del textbox que tenga el foco Bufff cuántas preguntas en un mismo post. Aver si puedo contestarlas todas. Lo primero de todo es que algo como esto:
Código:
No es cierto. Eso te devolvería un handler, o sea, una referencia a la función que asignaste.elemento.onfocus = function(){ ... }; elemento.onfocus; // "function(){ ... };" Lo de asignar los eventos, lo puedes hacer mediante el Model Event level 2, es decir, usando attachEvent/addEventListener. Esto hace que puedas añadir las funciones que quieras a un mismo evento sin que estas se "pisen". Lo de asignar los eventos a todos los inputs, aunque sean dinámicos, sinceramente no estoy seguro, podrías usar un setInterval, pero no es una solución limpia ni adecuada. Sé que jQuery tiene una función live, pero no me he parado a ver cómo funciona. Por último, el evento que buscas es oncontextmenu. Saludos (:
__________________ " Getting older’s not been on my plans but it’s never late, it’s never late enough for me to stay. " Cigarettes - Russian Red |
| |||
Respuesta: Cambiar valor del textbox que tenga el foco Interesantes tus respuestas, me han ayudado bastante, yo me pensaba que tenía que obtener los valores de los onfocus y usar una función replace, pero me has ahorrado bastante tiempo. Pondré en práctica tus soluciones y veré si lo soluciono. PD: prometo postear todo el código cuando lo termine ;) |
| ||||
Respuesta: Cambiar valor del textbox que tenga el foco Por cierto, esto era a lo que me refería con target y otras propiedades Saludos (:
__________________ " Getting older’s not been on my plans but it’s never late, it’s never late enough for me to stay. " Cigarettes - Russian Red |
| |||
Respuesta: Cambiar valor del textbox que tenga el foco He hecho esta función y me va bien:
Código Javascript:
Ver original El único problema es que me da error en la última línea al asignar la propiedad contextmenu al body. Pero si ejecuto la función manualmente es capaz de decirme el id del último input con el foco. Eso sí, todos los input no tienen por qué tener id y el fin de todo esto es agregar un fragmento de texto al último input con el foco. ¿Algunas soluciones para solventar estos dos problemas o mejorar el código? |
| |||
Respuesta: Cambiar valor del textbox que tenga el foco Haciendo uso de las API's para extensiones de Google y las funciones anteriores he solventado esto, pero el problema es que uso el atributo id para identificar los elementos, y no todos los input tienen por qué tener id, así que ¿hay alguna forma más genérica de identificar a un elemento? ¿por nodos se podría? Lo que he intentado es usar solo "this" y pasarlo a una variable en lugar de "this.id" y después intento obtener el atributo value en otra función, pero obtengo un "object HTMLInputElement". |
| ||||
Respuesta: Cambiar valor del textbox que tenga el foco buenas, queria agregar un detalle. no tienes porque recorrer por todos los elementos para registrar el evento. una de las características del modelo de evento es que los eventos se propagan. esta característica te permite registrar un solo evento para multiples elementos. por ejemplo en tu caso, puedes registrar el tipo de evento focus en body. luego en el handler tocaría determinar si el elemento que inicio el evento es de nuestro interes mediante event.target. mas informacion acerca del modelo de evento: http://kusor.net/traducciones/brainj...vents1.es.html http://www.w3.org/TR/DOM-Level-2-Eve...l#Events-Event
__________________ la maldad es una virtud humana, y la espiritualidad es la lucha del hombre contra su maldad. Última edición por zerokilled; 14/07/2011 a las 18:18 |
| |||
Respuesta: Cambiar valor del textbox que tenga el foco He estado revisando los artículos pero no he entendido cómo podría agregar de esa manera un evento a todos los elementos con determinada etiqueta, y cómo podría hacer referencia a un elemento sin tener su id. Como dije antes he probado añadiendo "this" en vez de "this.id" al evento y pasarlo a una función, pero a la hora de cambiar el valor la consola de Javascript me da error porque ese objeto no tiene ese método. Es decir, en vez de pasar a la función el "this.id" y luego usar "document.getElementById(focusId).value" lo que he intentado ha sido pasarle solo el "this" y usar "focusId.value". NOTA: "focusId" es un argumento de la función. |
| ||||
Respuesta: Cambiar valor del textbox que tenga el foco revisa este tema, http://www.forosdelweb.com/showthread.php?t=726818.
__________________ la maldad es una virtud humana, y la espiritualidad es la lucha del hombre contra su maldad. |
| |||
Respuesta: Cambiar valor del textbox que tenga el foco He leído el código que pusiste al final de ese hilo y me has dado una idea. Cuando el elemento tiene el foco le añado una id única y luego ya tengo una referencia para cambiar el valor del input. Eso sí ¿un mismo elemento puede tener varias id's separadas por espacios al igual que las clases? |
| ||||
Respuesta: Cambiar valor del textbox que tenga el foco No, un id no puede tener espacios. Aquí encontrarás la regla de nombres para ese atributo: http://www.w3schools.com/tags/att_standard_id.asp Además te sugiero revises el enlace sugerido por zerokilled para obtener el elemento target del evento en lugar la estrategia (mucho más costosa) que proponés en tu último post.
__________________ Fast, lightweight, cross-platform framework for building incredible, powerful JavaScript applications |
| |||
Respuesta: Cambiar valor del textbox que tenga el foco Gracias a los tres he conseguido solucionar el problema, esta es la función:
Código Javascript:
Ver original Hace uso de una API de Google para obtener un valor del menú contextual, pero todo lo demás es normal. |
Etiquetas: |