Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

175
Visualizações
javascript trigger script if mouse cursor leaves button container

I have a JS function which works fine, when the user clicks a button after x seconds the form will submit if the mouse button is held down, otherwise if the mouse is released the button goes back to its pre-clicked state. I have however discovered a problem where if the mouse cursor leaves the button then the form will still trigger and pretty much break everything.

I need to have my mouseup function also trigger if the mouse leaves the button or losses focus in any way.

Many thanks in advance.

function conf_submit(btn) {
var btn_name = $(btn).val();
var btnID = $(btn).attr('id');
var process = false;

$(btn).mousedown(function() {
    btn_timeout = setTimeout(function() {
        process = true;
        $(btn).val('Processing..');
        $(btn).attr('class', 'button btn_longpress small btn-processing');
        $('#' + btnID + '_form').submit();
    }, 2000);
    if(process == false){
        $(this).val('Release to cancel!');
        $(this).attr('class', 'button btn_longpress small cancel cancel-animate jiggle');
    }
});

$(btn).mouseup(function() {
    clearTimeout(btn_timeout);
    if(process == false){
        $(this).val( btn_name );
        $(this).attr('class', 'button btn_longpress small');
    }
});

}

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

If you extract the logic out of the mousedown and mouseup functions, it will make it easy to repurpose it.

function conf_submit(btn) {
    var btn_name = $(btn).val();
    var btnID = $(btn).attr('id');
    var process = false;

    var start = function () {
        btn_timeout = setTimeout(function () {
            process = true;
            $(btn).val('Processing..');
            $(btn).attr('class', 'button btn_longpress small btn-processing');
            $('#' + btnID + '_form').submit();
        }, 2000);
        if (process == false) {
            $(this).val('Release to cancel!');
            $(this).attr('class', 'button btn_longpress small cancel cancel-animate jiggle');
        }
    };
    var stop = function () {
        clearTimeout(btn_timeout);
        if (process == false) {
            $(this).val(btn_name);
            $(this).attr('class', 'button btn_longpress small');
        }
    };

    $(btn).mousedown(start);
    $(btn).mouseup(stop);
    $(btn).mouseleave(stop);
}
about 4 years ago · Juan Pablo Isaza Relatório

0

The event you are looking for is the "mouseleave" event.

The event in the script below will trigger everytime your mouse leaves the button.

document.getElementById("button").addEventListener("mouseleave", () => {
  alert("triggered event")
})
<button id="button">Click Me</button>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda