2014-09-02 107 views
0

初學者程序員在這裏。試圖創建一個原始的「聊天界面」,在JSP中,我輸入一些單詞,將它們存儲在一個數組中,然後,理想情況下,在同一頁面上吐出。我的代碼有點工作,但它加載到一個新的頁面。Javascript表單提交到新頁面 - 如何保持它在同一頁面上?

我試過了一些不同的東西,我在網上閱讀,包括嘗試添加「返回false」到我的showChats函數,試圖將提交更改爲按鈕並執行「onclick」,但它仍然不工作,總是加載一個新的頁面。有關如何解決這個問題的任何想法?

在此先感謝。這裏是代碼:

<script> 

counter = 0; 

//Array containing initial elements. 
var chats = []; 

function show_array(array) { 
    array[counter] = document.getElementById("chatlet").value; 
    for (x = 0; x < array.length; x++){ 
     document.write(array[x] + "<br/>"); 
    } 
    counter++; 
} 

</script> 

<form action="agenda2.jsp" method="get" onsubmit="show_array(chats)" > 
    <p> 
     <textarea id="chatlet" rows="10" cols="30"></textarea> 
    </p> 
    <input type="submit" value="Send Chat"> 
</form> 


</body> 
</html> 
+0

@RevanProdigalKnight:咦? OP基本上不想提交任何表格。如何修改表單的請求方法對*不提交表單有影響? – BalusC 2014-09-02 20:16:49

+0

將'return false;'添加到'show_array'方法的末尾(這將阻止表單提交)。 – xDaevax 2014-09-02 20:20:25

回答

0

您需要添加return關鍵字onsubmitonsubmit="return show_array(chats)"然後return false在JS函數中。

代碼:

<form action="agenda2.jsp" method="get" onsubmit="return show_array(chats)" > 

JS

counter = 0; 
var chats = []; 
function show_array(array) { 
    array[counter] = document.getElementById("chatlet").value; 
    for (x = 0; x < array.length; x++) { 
     document.write(array[x] + "<br/>"); 
    } 
    counter++; 
    return false; 
} 

DEMO

+0

這對我有用!我忘了添加返回到onsubmit!謝謝。 – skathan 2014-09-03 23:28:47

0

在你的函數show_array()的末尾,你必須添加返回false;或在其他情況下,你可能會海外商品會有使用jQuery和做到這一點:

給您形式的class和id

<form class="myform"> 
.... 
</form> 

<script> 
    $("myform").on('submit', function(e) { 
     e.preventDefault(); 
    }); 
</script> 

商祺!

0

使用查詢,你可以做以下

$('form').submit(function (e) { 
    e.preventDefault(); 

    $.ajax({ 
     type: "POST", 
     url: $(this).attr('action'), 
     data: 'get form data', 
     success: function (res) { 
      // handle response here 
     } 
    }); 
}); 
相關問題