2013-05-17 128 views
0

我已經使用PHP和JavaScript構建了一個瑣事遊戲。由於每個問題都有時間限制,因此我沒有提供提交按鈕;相反,用戶可以通過按Enter鍵直接提交答案。按下回車鍵後,用戶被重定向到另一個URL,該URL檢查發佈的答案是否正確,如果答案正確,則添加10點,然後用用戶的點更新數據庫,然後將用戶重定向到瑣碎頁面他們還有另一個問題需要回答。但是,當用戶輸入正確的答案並且多次按下輸入鍵而不讓頁面重新加載時,他們的回答被腳本認爲是有效的,並且他們的積分在提交答案時隨時添加。所以,如果我在輸入正確的答案後按了40次輸入鍵,它會增加400點。我嘗試過使用以下方法來防止這種情況發生:如何用輸入鍵防止多個表單提交?

$("form").submit(function() { 
    $(this).submit(function() { 
     return false; 
    }); 
    return true; 
}); 

但是這似乎不起作用。數據提交一次後,如何禁用提交操作直到頁面重新加載?

歡迎任何使用Javascript,Jquery或PHP的解決方案。

+0

似乎有點做的愚蠢的方式,但你試過之後可能他​​們打輸入您可以使用jQuery隱藏的形式,直到它重新加載? –

+0

我可以使用類似的方法: $('form')。submit(function(){ $('answerboxid')。hide(); }); –

+0

我相信如此的伴侶,試試吧,讓我知道你如何繼續:) –

回答

1

包括Jquery BlockUI插件。 http://www.malsup.com/jquery/block/並在您的頁面中包含以下代碼。

$("input").keypress(function(event) { 
    if (event.which == 13) { 
    event.preventDefault(); 
    $("form").submit(); 
    $.blockUI; 
    } 
}); 

當用戶點擊進入時,插件會阻止用戶界面和用戶將無法打,直到重新加載頁面重新輸入。

+0

我沒有使用塊UI插件,但使用按鍵模糊焦點,一旦輸入鍵被按下。 –

2

您必須添加一個解決方案來存儲將信息提交到數據庫中,如爲每個用戶添加+10值,您應該檢查您是否已經添加了值。我建議的原因,因爲任何其他客戶端選項可能會在一個或其他情況下失敗。

+0

我同意這個問題。在客戶端使用javascript可以防止用戶多次提交,但在遊戲/測驗中,您應該考慮人們故意作弊。那些具有JavaScript知識的人可以覆蓋你的客戶端預防措施。 –

3
var isSubmitted = false; 
$("form").submit(function() { 
    if(!isSubmitted){ 
    isSubmitted = true; 
    }else{ 
    return false; 
    } 
}); 
+0

這是不正確的,每次我刷新頁面isSubmitted將重置爲false。 – Devesh

+1

OP問_So,如果我在輸入正確的答案後按了40次輸入鍵,它會增加400點_ ..以防止這種情況。你可以使用上面的代碼。如果你想在頁面刷新後阻止它,你需要在服務器端處理。 –

+0

我試過這個,它不起作用。它不允許第一次提交。 –

2


試試這個代碼

$('#form1').submit(function(e) { 
    $('#send').attr("disabled", "disabled"); // Where #send is the id of ur submit button// 
});