2012-04-01 2 views
0

をフォームを送信:は)(キープレスを使用してjQueryを使って私がこれまで持って何

私は次が含まれているPHPのフォームがあります。

<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"> 

問題:

を私は、ユーザーが送信するボタンに応じて、応答値をname = 1またはname = 0のいずれかと一緒に送信したいとします。ただし、これはキーボードの文字AとSを使用して行う必要があります。ユーザーが文字Aを押すと値0を送信し、Sを押すと値1を送信する必要があります。

の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 
    }); 
} 

は目標:。

「2つのPOST変数(応答および0または1のいずれか)を受信initiate.php、それが聞こえる何

答えて

0

あなたがしようとしているようにこれはです:

<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> 

そして

$(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

私はあなたのコードを試しましたが、キーAまたはSのどちらにも反応しません。コードが正しいように見えますが、何が問題なのかはっきりしません。 – kexxcream

+0

"data:"を開始する行にセミコロンを付けました。今すぐ試してみてください。 – fet

+0

まだ動作しません。 – kexxcream

0

私は、これは「BORK」またはしないようにjQueryのを引き起こすかどうかわからないです...しかし、あなたがGETデータとして、あなたのPOSTデータを送信しているように見えます。

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

あなたは$ _POSTを使用してinitiate.phpにこれらの変数を探してみました場合は[「応答」]私はjQueryの魔法のポスト変数にこれらを回すために知っている場合を除き、それらを見つけることができないだろうと想像。

0または1のポスト変数の名前も0または1である必要がありますか?変数の設定に応じて変数名を変更するのはちょっと変です。この例では、変数名をkeyPressedに変更します。すなわち(keyPressed = 0または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} 
    }); 
} 

あなたのinitate.phpファイルでは、これらの変数を$ _POST変数を使用して取得します。

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

キーAまたはSを押しても依然としてフォームが送信されません。なぜこれが問題なのか分かりませんが、問題の原因を知りたいと思っています。 – kexxcream

+0

キー押下をバインドする方法でキー押下が認識されていますか? アラートを試みます( 'キーが押された' + e.which)。キープレスが聞こえていることを確認する。 submitViaKeyPress()メソッドの開始にalert()メソッドを追加して、メソッドが alert( 'element:' + element_idで呼び出されたキープレスを介して送信)されていることを確認します。 –

+0

私は、あなたのajax投稿に定義されたsuccessプロパティがないことに気づきました。 ajax投稿の後に何が起こるはずですか?現在、アクションを定義していないため、投稿されていないように見える場合があります。あなたはそれが行動すべきと思いますか? –

関連する問題