我想进行一个基本的表单提交,但是在Chrome和Safari中以下内容会向服务器提交两次(但在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
,表单都会被提交两次。我试图将一个 jQuery 处理程序绑定到表单上,但是如果默认行为没有被阻止,则表单仍然会被提交两次,例如:
<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中提交(包括验证或不验证)会使服务器上发布重复的帖子。如果您能提供任何见解,我将不胜感激。