szukam do wykonywania podstawowej formie post, ale następujące przekazuje do serwera dwukrotnie w Chrome i Safari (ale zachowuje się zgodnie z oczekiwaniami w Firefoksie):Formularz składać dwa razy w Chrome/Safari
<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>
bym lubię używać atrybutu onsubmit
do sprawdzania poprawności pól przed przesłaniem, ale jeśli wartość zwracana to true
, formularz jest wysyłany dwa razy.
starałem się powiązać obsługi jQuery do formy, ale i tu, gdzie domyślne zachowanie nie jest zabezpieczony, formularz jest przesyłany dwa razy, na przykład:
<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>
Choć przypuszczam, że coś jest oślepiająco Oczywistym błędem jest świeża para oczu, jestem głęboko zmieszany, dlaczego przesyłanie, z lub bez sprawdzania poprawności, powoduje duplikowanie postu na serwerze w przeglądarce Chrome i Safari. Byłbym wdzięczny za każdy wgląd.
Czy jest coś jeszcze? Czy istnieją jakieś programy obsługi "click", które jawnie wywołują "submit()" w formularzu, na przykład? – Pointy
Dzięki, Pointy. Nie, w tej chwili są to zupełnie nagie kości, bez żadnych innych uchwytów związanych z formą lub przyciskami. – meg
Czy masz przykład strony lub opublikować zawartość strony (wszystkie HTML i JS), abyśmy mogli zobaczyć? –