基本的なフォーム投稿を実行しようとしていますが、Chrome と Safari では次のようにサーバーに 2 回送信されます (ただし、Firefox では期待どおりに動作します)。
<form id="create-deck-form" action="/decks/create" method="post">
<fieldset>
<legend>Create new deck</legend>
<label for="deck-name-field">Name</label>
<input id="deck-name-field" name="deck-name-field" type="text" value="" maxlength="140" />
<label for="tag-field">Tags</label>
<input id="tag-field" name="tag-field" type="text" value="" maxlength="140" />
<input class="add-button" type="submit" value="Create" />
</fieldset>
</form>
属性を使用して送信前にフィールドの検証を実行したいのonsubmit
ですが、戻り値がtrue
である場合、フォームは 2 回送信されます。
jQuery ハンドラーをフォームにバインドしようとしましたが、ここでもデフォルトの動作が妨げられず、フォームが 2 回送信されます。
<script type="text/javascript">
$(document).ready(function() {
$("#create-deck-form").submit(function(event){
if($("#deck-name-field").val() == "") {
event.preventDefault();
alert("deck name required");
}
});
});
</script>
新鮮な目で見ると、ここには目がくらむほど明らかな問題があると思いますが、検証の有無にかかわらず、提出がChromeとSafariのサーバーに重複して投稿される理由を非常に混乱させています. どんな洞察にも感謝します。