Pregunta

Yo simplemente quieren ocultar un div, si un cuadro de texto pierde el foco, a menos que, el usuario hace clic en otra cierta div. Si el usuario hace clic esa particular div, entonces el focusOut no activa el div.box se ocultan.

A continuación se muestra el código con mi pseudocódigo comentar. Algunas ideas?

textInput.focusout(function() {
    // So long you didn't click div.stop, then
        $('div.box').hide();
});
¿Fue útil?

Solución

var flag = false;

$('div.stop').click(function() {flag = true;});
textInput.focusout(function() {
    // So long you didn't click div.stop, then
    if(!flag)
        $('div.box').hide();
});

Si usted quiere evitar la adición de la variable de indicador, se puede usar jQuery .data para almacenar el valor de bandera contra, por ejemplo el elemento div.stop, por ejemplo:

$('div.stop').click(function() {$(this).data('clicked', true);});

// ...

    if(!$('div.stop').data('clicked'))
// ...

Editar

Si desea permitir la situación en la que el cuadro de texto tiene el foco, y luego hace clic en div.stop, y no quiere que esconder, entonces podría intentar algo como:

$('div.stop').click(function() {$('div.box').stop();});
textInput.focusout(function() {
    // So long you didn't click div.stop, then
    $('div.box').delay(200).hide();
});

Otros consejos

$(document).bind('click',function(e) {
  if ($(e.target).closest('div.box').length) return;
  $('div.box').hide();
});

Trate esto!

var flag = false;
$('#inputID').blur(function(){
   $('div.box').toggle(flag);       
});

$('#someDIVid').click(function(){
    flag = true;
});

sencilla demostración

notas añadidas:

.toggle (showOrHide)

showOrHide A booleano que indica si para mostrar u ocultar los elementos. Si este parámetro es true, entonces el emparejado se muestran elementos ; Si false, el elementos están ocultos .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top