2017-01-06 9 views
0

Ist es möglich, Tastenbetätigungen nach dem Drücken einer '%' in jQuery zu erkennen? Was ich will ist, dass, nachdem ein Benutzer '%' gedrückt hat, das Skript alle Tastenfolgen danach erkennt, eine Liste nach Übereinstimmungen durchsucht und stoppt, wenn der Benutzer auf ein Listenelement in dieser Liste klickt.Wie erkennen Sie alle Tastendrücke nach dem Drücken einer%

$(iframeDocument).find('body').on('keypress', function(event) { 
    if(event.which === 37) { 
     $('#tokens-menu dd').trigger("click"); 
    } else { 
     // search through a list 
     $(iframeDocument).find('body').handleBackspace(event); 
    } 
    }); 
+0

Ich glaube nicht, Cross-Domain-oder Cross-Frame-Anforderungen arbeiten. –

+1

@PraveenKumar können sie aber aus der Vergangenheit Erfahrung ist es nicht immer zuverlässig (browserabhängige Einstellungen) und schwer einzurichten. Aus dem Speicher müssen Sie Zugriffsrichtlinien oder etwas in diesem Sinne festlegen. Ich habe mich in ein paar Jahren nicht mehr so ​​sicher angeschaut. –

Antwort

0

eine Variable, wenn Sie die % erfassen und verarbeiten dann alle Tastenanschläge danach. Wenn sie auf die Schaltfläche klicken, löschen Sie die Variable.

var percent_pressed = false; 
 
$(window).on('keypress', function() { 
 
    var key = event.which; 
 
    if (percent_pressed) { 
 
    // use this keypress 
 
    $("#output").append(String.fromCharCode(key)); 
 
    } else if (key == 37) { 
 
    percent_pressed = true; 
 
    $("#output").empty(); 
 
    } 
 
}); 
 
$("#tokens-menu").click(function() { 
 
    percent_pressed = false; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<h4>Type % to start appending to output</h4> 
 
Output: <span id="output"></span> 
 
<br> 
 
<button id="tokens-menu">Click to restart</button>

0

Hier ist ein Beispiel auf der Basis Ihrer Beschreibung:

$(document).on('keyup', function (e) { 
    var c = String.fromCharCode(e.which) // or e.keyCode; 
    if (logging) { 
     rec.push(c); 
    } 

    // start logging if '%' pressed 
    if (e.shiftKey && e.which == 53) { 
     logging = true; 
    } 
}); 

es sehen zu laufen hier: https://jsfiddle.net/ddan/kuotty5v/

Nach dem Drücken von '%' wird die Aufnahme starten, was Sie tippe. Sie können auf die Schaltfläche "Aufgezeichneten Titel anzeigen" klicken, um zu erfahren, was bisher aufgenommen wurde. Ich hoffe, dass es hilft, Ihre Lösung daraus zu bauen.

Verwandte Themen