2012-04-01 8 views
0

Was ich habe, so weit:mit keypress()

Ich habe ein Formular in PHP, die Folgendes enthalten:

<input type="submit" id="0" name="0" value="This button"> 
<input type="submit" id="1" name="1" value="This button"> 
<input type="hidden" id="response" name="response" value="150"> 

Das Problem:

Ich möchte den Antwortwert zusammen mit entweder name = 1 oder name = 0 senden, abhängig davon, welche Schaltfläche der Benutzer sendet. Dies sollte jedoch mit den Tastaturbuchstaben A und S geschehen. Wenn ein Benutzer den Buchstaben A drückt, sollte der Wert 0 übergeben werden, und wenn S gedrückt wird, sollte der Wert 1 gesendet werden.

Der Code jQuery:

$(document).ready(function() 
{  
    // listens for any navigation keypress activity 
    $(document).keypress(function(e) 
    { 
     switch(e.which) 
     { 
      // user presses the "a" 
      case 97: submitViaKeypress("0"); 
      break; 

      // user presses the "s" key 
      case 115: submitViaKeypress("1"); 
      break; 
     } 
    }); 
}); 

// shows a given element and hides all others 
function submitViaKeypress(element_id) 
{ 
    var response  = $('#response').attr('value'); 

    $.ajax({ 
     type: "POST", 
     url: "initiate.php", 
     data: "response=" + response + "&" + element_id + "=" + element_id 
    }); 
} 

. Ziel:

Das „initiate.php zwei POST-Variablen empfangen (Antwort und entweder 0 oder 1)

Antwort

0

Was es klingt wie du versuchst zu tun ist dies:

<form id="key_form" action="initiate.php" method="POST"> 
    <p>Press A or S</p> 
    <input type="hidden" id="key" name="key" value=""> 
    <input type="hidden" id="response" name="response" value="150"> 
</form> 

Und

$(document).keypress(function(e) 
{ 
    if (e.which == 97) 
    { 
    $("input#key").val(1); 
    $("form#key_form").submit(); 

    } else if (e.which == 115) 
    { 
    $("input#key").val(2); 
    $("form#key_form").submit(); 
    } 
} 
+0

Ich habe versucht Ihren Code, aber es reagiert nicht auf Schlüssel A oder S. Nicht sicher, was falsch ist, obwohl ich sehe, dass der Code richtig aussieht. – kexxcream

+0

Ich hatte ein Semikolon auf der Zeile, die "Daten" startet: Versuchen Sie es jetzt. – fet

+0

Funktioniert immer noch nicht. – kexxcream

0

Ich bin nicht sicher, ob dieser jQuery ‚bork‘ verursachen würde oder nicht ... aber es sieht aus wie Sie als GET-Daten Ihre POST-Daten zu senden.

data: "response=" + $('#response').attr('value') + "&key=" + e.which; 

Wenn Sie versucht für diese Variablen in initiate.php mit $ _POST [ ‚Antwort‘] Ich würde es nicht, sie zu finden in der Lage vorstellen zu suchen, es sei denn jQuery weiß magisch diese in Post Variablen zu drehen.

Muss die Post-Variable für 0 oder 1 auch 0 oder 1 heißen? Es ist ein wenig seltsam, den Variablennamen zu ändern, abhängig davon, auf was die Variable eingestellt ist. Für den Zweck dieses Beispiels werde ich den Variablennamen in keyPressed ändern. d.h. (keyPressed = 0 oder keyPressed = 1).

// shows a given element and hides all others 
function submitViaKeypress(element_id) 
{ 
    var response = $('#response').attr('value'); 

    $.ajax({ 
     type: "POST", 
     url: "initiate.php", 
     data: {response:response, keyPressed: element_id} 
    }); 
} 

Jetzt in Ihrer initiate.php-Datei erhalten Sie diese Variablen mit der Variable $ _POST.

$response = $_POST['response']; 
    $keyPressed = $_POST['keyPressed']; 
+0

Es sendet immer noch nicht das Formular, wenn Sie die Tasten A oder S drücken. Ich weiß nicht, warum das ist, aber ich bin sehr gespannt, um herauszufinden, was das Problem ist. – kexxcream

+0

Sind Sie sicher, dass der Tastendruck für die Art und Weise, wie Sie den Tastendruck festlegen, erkannt wird? Versuchsalarm ('Taste gedrückt' + e.which); Um sicherzustellen, dass der Schlüssel gedrückt wird. Wenn dies funktioniert, fügen Sie eine alert() zum Start Ihrer submitViaKeyPress() - Methode, um sicherzustellen, dass die Methode aufgerufen wird alert ('über die Taste drücken mit Element:' + element_id aufgerufen); –

+0

Ich habe gerade festgestellt, dass Sie keine Erfolgs-Eigenschaft für Ihre Ajax-Post definiert haben. Was soll nach der Ajax Post passieren? Derzeit haben Sie keine Aktion definiert, daher scheint es, dass nichts gepostet wird. Kannst du mir beschreiben, wie du es erwarten kannst? –