2009-10-13 16 views
2

Je suis nouveau sur jQuery et j'essaie de déclencher une fonction sur une touche si aucune entrée n'est sélectionnée. J'ai des problèmes avec les tests pour me concentrer. Voici ce que j'ai actuellement mais ça ne fonctionne pas correctement. Aucun conseil?Déclenchement d'une fonction en appuyant sur une touche si aucune entrée n'est sélectionnée

var inputHasFocus = false; 
$('#myForm :input').each(is(":focus")){ 
    inputHasFocus = true; 
}; 

if (inputHasFocus == false){ 

    $("*").keypress(function (e) { 
     // the function 
    }); 
} 

Répondre

2
var focusedInputs = $("#myForm input:focus"); 
if (focusedInputs != null && focusedInputs.length > 0) { inputHasFocus = true; } 

Quelque chose comme ça.

+0

Merci Plan B travaillé très bien une fois que je l'ai mis à l'intérieur de la touche. Il semble que l'autre réponse fonctionnerait aussi bien mais j'ai essayé ceci d'abord et cela a fonctionné ainsi je n'ai pas essayé l'autre. Merci à vous deux! . $ ("*") keypress (function (e) { \t var inputHasFocus = false; \t var focusedInputs = $ ("entrée # myForm: focus"); \t si (focusedInputs = null && focusedInputs!. longueur> 0) { \t inputHasFocus = true;}! \t si (inputHasFocus = true) {// \t \t la fonction pour exécuter chaque fois qu'une touche est pressée sans entrée sélectionnée \t}} \t }) ; – Lance

+0

Je suis content que ça a marché pour vous! :) –

1

Je voudrais essayer comme suit:

var inputHasFocus = false; 

$('#myForm :input').focus(function() { 
    inputHasFocus = true; // Set true if a Form-Field is selected 
}).blur(function() { 
    inputHasFocus = false; // Set false if a Form-Field has left 
}); 

$("*").keypress(function() { 
    if(!inputHasFocus) { 
     // check if(inputHasFocus) after the keypress has done 
     // otherwise you have the basic value in the var inputHasFocus 
     // here you can run your function... 
    } 
}); 

jQuery Documentation-Liens vers les fonctions utilisées:

0

Vous pouvez également essayer quelque chose comme ceci:

var inputHasFocus = false; 

$('#myForm input').each(function() { 

if ($(this).is(":focus")) { 
    inputHasFocus = true; 
} 

}; 
+0

Assez exactement ce que snuffer.ch a suggéré sauf sans le flou. – ohaal

Questions connexes