モバイル デバイスで使用するように設定された Web サイトがあります。ユーザーはキャンバス要素に描画し、「submitButton」ボタンをクリックしてキャンバスをサーバーに保存できます。ユーザーがボタンをクリックすると、「submitButton」ボタンが消え、代わりに「submittingButton」ボタンが表示されます。これはすべて正しく機能しています。type=button
実際、「submittingButton」ボタンをではなくに変更した後、プロジェクト全体が正しく機能していますtype=submit
。
しかし、私の質問は、style.display
「submittingButton」ボタンの を変更すると、 を に設定するstyle.display
とblock
、フォームは送信されませんが (これが必要です)、ボタンは新しい行に表示されます。ただし、style.display
をinline
またはに設定するとinline-block
、フォームが送信され、ページが更新され、図面がクリアされます。が に設定されているときにフォームが送信されるのはなぜですか?またはがstyle.display
に設定されているときにフォームが送信されないのはなぜですか?inline
inline-block
style.display
block
私のコードの関連部分は次のとおりです。
function sendImage(){
if(window.hasBeenDrawn){
document.getElementById("signError").style.display="none";
document.getElementById("submitButton").disabled=true;
document.getElementById("clearButton").disabled=true;
window.wasSent=true;
document.getElementById("submitButton").style.display="none";
document.getElementById("submittingButton").style.display="";
//document.getElementById("submittingButton").style.display="block";
saveImage();
}
そしてHTML:
<form method="post" action="" class="sigPad">
<div id="receipt" style="text-align:center">
<div class="sig sigWrapper">
<canvas style="width:85%; height:95%; margin-top:25px" height="300" class="pad" id="myCanvas" />
<input type="hidden" name="output" class="output" />
</div>
<br />
</div>
<div id="clearSubButtons">
<button id="clearButton" onclick="redoSig(); return false;" > </button>
<button id="submitButton" type="submit" onclick="sendImage()"> </button>
<button id="submittingButton" style="display:none;"> </button>
</div>
</form>
PS。「submittingButton」を に変更することで、コードが期待どおりに機能するようになりましたtype=button
。フォームを送信したくありません。saveImage()
関数は ajax 投稿を使用して画像をサーバーに送信します。