Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    74

    intercettare evento onblur e cancellarlo

    Ciao a tutti, in fase di controllo di elementi input (text) con javascript, avrei necessità di annullare l'evento on blur, e quindi fare in modo che il cursore non si sposti dall'elemento a cui è associato se non vengono soddisfatte determinate condizioni. Vi posto il codice html e la funzione javascript associata. In questo caso, quando si verifica l'evento blur, vorrei che venisse visualizzato un messaggio e che il cursore rimanesse dentro l'elemento 'pag_1', ho provato ad utilizzare preventDefault ma il cursore passa sempre all'elemento successivo 'pag_2'. Potete aiutarmi?

    Grazie a tutti!


    <input id="pag_1" type="text" onblur="controlla(event)">
    <input id="pag_2" type="text">


    function controlla(e)
    {
    alert(e.target.id);
    e.preventDefault();

    }

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133

    Re: intercettare evento onblur e cancellarlo

    Originariamente inviato da mpala
    ... e quindi fare in modo che il cursore non si sposti dall'elemento a cui è associato se non vengono soddisfatte determinate condizioni. Vi posto il codice html e la funzione javascript associata. In questo caso, quando si verifica l'evento blur, vorrei che venisse visualizzato un messaggio e che il cursore rimanesse dentro l'elemento 'pag_1', ...
    Non è possibile fai i controlli al submit del form
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    74
    Il submit non viene chiamato in causa perchè il form viene inviato attraverso una funzione js (non esiste input type 'submit'). Il problema è l'impossibilità di fermare l'evento blur, forse perchè non prevede il bubbling.... l'evento viene correttamente intercettato, infatti il testo dell'alert riporta l'id dell'elemento che ha scatenato l'evento. Hai idea di come posso risolvere?

    Grazie!

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    function controlla(e)
    {
    alert("errore");
    e.target.focus();

    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    74
    Niente da fare, ho provato a ridare il focus all'elemento, ma in ogni caso il cursore si posiziona su 'pag_2'...esiste un evento alternativo a blur?

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da mpala
    Il submit non viene chiamato in causa perchè il form viene inviato attraverso una funzione js
    Sarebbe comunque meglio fare i controllo nella funzione prima dell'invio
    (non esiste input type 'submit'). Il problema è l'impossibilità di fermare l'evento blur, forse perchè non prevede il bubbling.... l'evento viene correttamente intercettato, infatti il testo dell'alert riporta l'id dell'elemento che ha scatenato l'evento. Hai idea di come posso risolvere?

    Grazie!
    Per i campi input poi provare cosi (ma non garantisco che sia funzionante con tutti i browser)
    <input id="pag_1" type="text" onblur="controlla(this)">
    <input id="pag_2" type="text">

    function controlla(ele)
    {
    if(controlli se torna false){
    alert('indicare l\'errore');
    setTimeout(function(){document.getElementById(ele. id).focus()},100)
    return false;
    }
    }
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Originariamente inviato da mpala
    Niente da fare, ho provato a ridare il focus all'elemento, ma in ogni caso il cursore si posiziona su 'pag_2'...esiste un evento alternativo a blur?
    Ci sarà qualche errore nella tua pagina, come ti ho suggerito funziona

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    74
    Ho risolto con la soluzione di Cavicchi Andrea:
    praticamente dovevo valutare se il value del campo era un numero e in caso contrario riportare il focus sull'elemento:

    function controlla(ele)
    {
    if (isNaN(ele.value))
    {
    alert('Non è un numero');
    setTimeout(function(){document.getElementById(ele. id).focus()},10)
    return false;
    }
    }

    Grazie a tutti per la collaborazione!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.