2013-02-02 50 views
0

我有4個提交按鈕的導航窗體。JavaScript沒有擴展庫發送帖子

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

和連接這通過身體onkeypress事件= 「read_key(事件)」 HTML。有人能幫我解決錯誤的地方嗎?我想在沒有像jQuery這樣的擴展庫的情況下放棄它。對不起,我的英語不好。

+1

什麼是document.arrows? – 2013-02-02 21:11:52

+0

@qqq它是表單元素:文檔。 + formname或document.forms。 + formname都在工作。 –

回答

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); 
    } 
} 
+0

謝謝。但是又錯了:)。我想我應該嘗試另一種方式。也許它會是jQuery。 –

+0

@ValeraAntonov查看TildalWave的評論,這是正確的,您的表單將在每個關鍵事件上生成併發布。生成之前您必須檢查密鑰碼。我已經更新了我的答案。 –

+0

感謝您的回答!我會嘗試它,而不是寫總結。 –