2016-04-28 15 views
5

pre-storia: Sto usando Algolia di ricerca per cercare il mio website.If la digitazione inizio dell'utente nel campo di input i risultati inizieranno apparendo sullo schermo.Come sparare cliccare su un pulsante se il tipo di utente in una casella di input

End goal: chiudere i filtri (funzionalità di commutazione) per impostazione predefinita.

Problemi: quando l'utente inizia a digitare nell'input l'URL cambia e i filtri rimangono aperti.

  • Se applico il codice nella console dopo che l'utente ha terminato la digitazione, posso vedere il pulsante chiudersi.
  • Se applico i codici jQuery sotto e mentre sto digitando i filtri restiamo chiusi, ma ancora una volta l'utente smette di digitare i filtri nuovamente aperti.
  • Una volta terminato con la digitazione (l'input perde messa a fuoco) i filtri si aprono di nuovo.

Il mio approccio:

  • Prima

    $("input#dropdown_search").on('input',function(e){ 
        $("b- utton.button.filters__button").click();  
    }); 
    
  • Seconda

    $('input#dropdown_search').keyup(function() { 
        $("button.button.filters__button").click(); 
    }); 
    
  • Terzo

    $('input#dropdown_search').on('inputchange', function() { 
        $("button.button.filters__button").click(); 
    }); 
    
  • Quarto

    $("input#dropdown_search").on('change keyup paste', function() { 
        ApplyFilter(); 
    }); 
    
    function ApplyFilter() { 
        $("button.button.filters__button").click(); 
    } 
    

    Sembra che non raggiungono l'obiettivo finale dove tengono il filtro nascosto, anche dopo che l'utente smette di digitare.

Potete aiutare, per favore?

+0

si può mettere un po 'del vostro codice ? –

+0

'.click();' attiva solo altri listener di eventi aggiunti con '.click', non simulerà la pressione di un pulsante nativo per motivi di sicurezza (è possibile inviare moduli senza che l'utente lo sappia). –

+0

@Sergiu Paraschiv l'evento click funziona bene poichè ha come target "button.button.filters__button" il problema che ho di fronte è che mentre lo digito si nasconde ma una volta smesso lo si mostra di nuovo. Se clicco da qualche altra parte, la funzione click viene tratteggiata di nuovo – John

risposta

0

Prova questo:

var timer; 
$("input#dropdown_search").on('change keyup', function() { 
    clearInterval(timer); 
    timer = setInterval(function() { 
     ApplyFilter(); 
    }, 1500); 
}); 
0

È possibile utilizzare trigger per innescare click

$("#dropdown_search").on('change keyup paste',function(event){ 
$(".buttonclass").trigger('click'); //trigger .buttonclass button on trigger of events 
}) 
$(".buttonclass").on('click',function(event){ 
alert("I am clicked") 
}) 

Example jsFiddle

0

tipo nel primo input, che fare clic sul pulsante subito quindi la funzione del fuoco per modificare il secondo valore di ingresso


 
    
 
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
</head> 
 
<body> 
 

 
<input type=text id=dropdown_search> 
 
    <input type=text id=dropdown_search2> 
 

 
    <button id=target onclick="be()"> 
 

 
<script> 
 
    
 
    onload = function() { 
 

 
     var t = document.getElementById('dropdown_search'); 
 
     t.oninput = function(){ 
 
     
 
     document.getElementById("target").click(); 
 
      
 
     }; 
 
     t.onpropertychange = t.oninput; // for IE8 
 
     t.onchange = t.oninput; 
 

 
     }; 
 

 
function be() { 
 
var t = document.getElementById('dropdown_search').value; 
 
document.getElementById('dropdown_search2').value=t;} 
 
    </script> 
 
    
 
    </body></html>

Problemi correlati