Отправить форму с помощью jQuery с помощью keypress () - PullRequest
0 голосов
/ 01 апреля 2012

Что у меня есть:

У меня есть форма на 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">

Проблема:

Я хотел бы отправить значение ответа вместе с именем = 1 или именем = 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
    });
}

Цель:

То, что "initiate.php получает две переменные POST (response и 0 или 1).

Ответы [ 2 ]

0 голосов
/ 02 апреля 2012

Я не уверен, может ли это привести к тому, что jQuery «сработает» или нет ... но похоже, что вы отправляете свои данные POST как данные GET.

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

Если вы попытаетесь найти эти переменные в initiate.php, используя $ _POST ['response'], я думаю, что они не смогут найти их, если jQuery не знает, как волшебным образом превратить их в переменные post.

Должна ли переменная post для 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}
   });
 }

Теперь в вашем файле initiate.php получите эти переменные, используя переменную $ _POST.

   $response = $_POST['response'];
   $keyPressed = $_POST['keyPressed'];
0 голосов
/ 01 апреля 2012

То, что вы пытаетесь сделать, звучит так:

<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();
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...