tengo un <input type="text"/> que es para realizar dos funciones. La función que se ejecuta se decide mediante un botón. Este botón debería alternar la función onkeyup. Para esto usé lo siguiente:
document.getElementById('input-search-tags').onkeyup = filter_tagsC()pero cuando hago clic en el botón, la función no cambiará.
Para alternar entre qué función se onkeyup en tecla, necesita un detector de eventos de clic en el botón para establecer qué función debe ejecutarse.
const input = document.querySelector("input") const button = document.querySelector("button") let functionState = "one" const oneFunc = () => console.log("one") const twoFunc = () => console.log("two") input.onkeyup = oneFunc const toggleFunctions = () => { if (functionState === "one") { input.onkeyup = twoFunc functionState = "two" } else { input.onkeyup = oneFunc functionState = "one" } } button.addEventListener("click", toggleFunctions) <div> <input type="text" /> <button>Toggle function</button </div> Con este ejemplo, obtengo ambos elementos con querySelector . Luego establezco un valor de estado con let para que se pueda cambiar su valor. Luego defino las 2 funciones entre las que quiero alternar. También configuré la input para tener onkeyup de oneFunc , ya que functionState comienza como uno.
Luego, defino una función que asignará una función diferente a onkeyup según el estado de functionState y restableceré functionState al nuevo valor. Por último, agrego un detector de eventos al botón para ejecutar la función toggleFunctions al hacer clic.
Debe especificar que está llamando a una función onKeyUp y luego especificar el nombre de esa función:
document.getElementById('input-search-tags').onkeyup = function() {filter_tagsC()} function filter_tagsC() { // Your Code Here. }Para un método más fácil de manejar onkeyup, sugeriría mirar el método de escucha de eventos keyup , ya que es una forma un poco más lógica de manejar eventos. Espero que esto ayude.