2009-12-31 12 views
8

Ho problemi a nascondere alcuni popup che sono basati su div. quando clicco fuori quei div non si nascondono. Ecco il codice di esempio quello che sto facendo ..Problema con jquery blur() evento su elemento Div

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 

    <script type="text/javascript" src="../JS/jquery-1.3.2.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() 
     { 
      $("#MainCanvas div").blur(function() 
      { 
       alert("blured"); 
      }); 
     }); 
    </script> 

</head> 
<body> 
    <div id="MainCanvas" style="width: 400px; height: 350px; border: solid 1px black;"> 
     <div class="ui-widget-content" style=" vertical-align:middle; height:60px; border: solid 2px black; width:300px;"> 
      Drag me around 
     </div> 
    </div> 

</body> 
</html> 
+1

duplicati di http://stackoverflow.com/questions/1259716/how-to-blur-the-div-element –

risposta

23

Se non ricordo male, solo A, AREA, BUTTON, INPUT, LABEL, SELECT, TEXTAREA creare eventi di messa a fuoco/sfocatura. Se si desidera nascondere il popup facendo clic all'esterno, è necessario ad esempio ascoltare gli eventi di clic sul documento e verificare se l'evento si è verificato all'interno o all'esterno del popup.

codice di esempio:

$(document).click(function(e){ 
    if($(e.target).is('#MainCanvas, #MainCanvas *'))return; 
    $('#MainCanvas').hide(); 
}); 
+3

Oppure si potrebbe usare mouseout se non vuoi che i tuoi utenti debbano fare clic. Se devono fare clic da qualche parte, si potrebbe anche avere un pulsante di chiusura nella finestra di dialogo e fare clic su di esso. – tvanfosson

+0

Grazie Rafael .. Ho ottenuto il punto .. –

+0

@Jehanzebafridi non dimenticare di controllare la risposta che accettate come accettata (l'icona sotto il numero di sinistra della risposta) – Moak

0

L'idea migliore sarebbe quella di gestire l'evento MouseDown e controllare l'elemento che ha richiamato l'evento.

1

ho fatto utilizzando il seguente codice

<script> 
    $(document).click(function (e) { 
     if ($(e.target).is('._dpcontrol, ._dpcontrol *')) 
      return; 
     $('._dpcontrol').each(
       function (index, value) { 
        var retrivedtextbox = $(this).find('._dpitem')[0]; 
        $(retrivedtextbox).fadeOut(); 
       });  
    }); 
</script> 
1

È possibile aggiungere l'attributo tabindex su div tag:

<div class="my_div" tabindex="3"></div> 

e dopo quell'evento sfocatura lavoreranno:

$('.my_div').blur(function(){ 
    //code ... 
}); 
+0

non funzionante -.- –

0

Ho preso in prestito un suggerimento da più soluzioni per semplificare le cose. Fondamentalmente quando metto a fuoco qualcosa voglio che appaia, ma se clicco su di esso, voglio che si nasconda di nuovo. Quindi, se clicco su qualcosa INSIDE del div che è apparso, il mio click andrà a vedere se trova un genitore chiamato "DivHoldingcustomController". Se è così, non fare nulla. Se non lo fa (perché ho cliccato da qualche altra parte, quindi ho fatto clic su non ha questo genitore), quindi nascondi il controller personalizzato.

$(document).on("click", function (event) { 
     var groupSelectorArea = $(event.target).closest(".DivHoldingCustomController").length == 1; 
     if (!groupSelectorArea) 
      $(".SomethingIWantToHide").hide(); 
    }); 
0

È possibile utilizzare mouseleave metodo e soluzione

<script type="text/javascript"> 
    $(document).ready(function() 
    { 
     $("#MainCanvas div").mouseleave(function() 
     { 
      alert("mouseleave"); 
     }); 
    }); 
</script> 
0

jQuery ha .focusin() e .focusout() metodi per la rilegatura di confondere e mettere a fuoco gli eventi su elementi che non sparano un evento sfocatura javascript nativo. jQuery focusout

3

per div focusOut blur() funzionerà

$('#divCustomerGroup').focusout(function() { 
      alert('yo'); 
     }); 
+0

in alto! Semplice ed elegante. –

+0

grazie fratello ... Yo –

Problemi correlati