我正在寻求执行基本的表单帖子,但是以下内容在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中向服务器发送重复的帖子.任何见解都会让我感激不尽.