0

4 つの送信ボタンがあるナビゲーション フォームがあります。

<form action="index.php?do=move" method="post">
<center>
<input name="north" type="submit" value="North" /><br />
<input name="west" type="submit" value="West" /><input name="east" type="submit" value="East" /><br />
<input name="south" type="submit" value="South" />
</center>
</form>

キーボードの矢印を押したときにデータを送信するjs関数を作成する必要があります。これが私の解決策ですが、utは機能しません:)

function read_key(event){
var form  = document.createElement('form');
    form.name = "arrows";
    form.method = "POST";
    form.action = "index.php?do=move";
    var sub = document.createElement('input');
    sub.type = "submit";
    if(event.keyCode==37){
        sub.name  = "west";}
    if(event.keyCode==38){
        sub.name  = "north";}
    if(event.keyCode==39){
        sub.name  = "east";}
    if(event.keyCode==40){
        sub.name  = "south";}   
    form.appendChild(sub);
    document.arrows.submit();
}

これを body onkeypress = "read_key(event)" 経由で html に接続します。誰かがどこが間違っているかを理解するのを手伝ってくれますか? jQueryのような拡張ライブラリなしでリライズしたいと思います。私の悪い英語でごめんなさい。

4

1 に答える 1

0

フォームを DOM に追加する必要があります。これはうまくいくはずです:

function read_key(event){
    if(event.keyCode >=37 && event.keyCode <=40) {
    var form  = document.createElement('form');
        form.name = "arrows";
        form.method = "POST";
        form.action = "index.php?do=move";
        var sub = document.createElement('input');
        sub.type = "submit";
        if(event.keyCode==37){
            sub.name  = "west";}
        if(event.keyCode==38){
            sub.name  = "north";}
        if(event.keyCode==39){
            sub.name  = "east";}
        if(event.keyCode==40){
            sub.name  = "south";}   
        form.appendChild(sub);
        // you have to append the form to body
        document.body.appendChild(form);
        // you can do it like that:
        // document.arrows.submit();
        // but simpler is:
        form.submit();
        // remove it after submit
        document.body.removeChild(form);
    }
}
于 2013-02-02T21:18:15.820 に答える