2010-09-19 13 views
6

Ich habe ein ziemlich komplexes Formular erstellt, das einen versteckten Abschnitt enthält, den der Benutzer öffnen kann, um bei Bedarf weitere Informationen einzugeben. Wenn Sie jedoch auf diese Schaltfläche klicken, die mit gekennzeichnet ist, habe ich mehr Krippen, es löst die Übermittlungsschaltfläche aus und übermittelt das Formular vorzeitig.Warum löst die Schaltfläche "toggle" von jQuery die Schaltfläche "Senden" in einem Formular aus?

Der Formular ist derzeit in dev. Unter der Suchanfragen befinden sich: here.

Der Code, den ich für den Umschaltknopf bin mit ist:

<script type="text/javascript"> 
    $(function() { 
     $("#schedule").accordion({ header: "h5", collapsible: true }); 
     $("#more-nativities").hide(); 
     $("#toggle").click(function() { 
      $("#more-nativities").slideToggle("slow"); 
     }); 
    }); 
    </script> 

Der Code für die Submit-Button ist ziemlich einfach:

<input id="submit2" type="image" src="_images/btn_register.jpg" name="submit" alt="" onmouseover="javascript:this.src='_images/btn_register2.jpg'" onmouseout="javascript:this.src='_images/btn_register.jpg'"/> 

Der Code für die Toggle-Taste ist:

<button id="toggle">I have more nativities</button> 

Irgendwelche Ideen, warum die Umschalttaste das Senden auslöst? Und noch wichtiger, wie man das Problem löst?

Danke!

+4

Nebenbei würde ich vorschlagen, nicht [inline JS. Schreibe unaufdringliches Javascript] (http://stackoverflow.com/questions/1064166/is-there-any-good-reason-for-javascript-to-be-inline). –

+0

Es ist sehr hilfreich, so viel relevanten Code wie möglich zur Verfügung zu stellen. Ich habe den ursprünglichen Code für die Umschalttaste bearbeitet. –

Antwort

11

Versuchen Sie, eine Art Zugabe, d.h .:

<button type="button" id="#toggle">Text</button> 

http://www.w3schools.com/tags/tag_button.asp sagt dies immer definiert werden sollte. Es ist möglich, dass der Browser standardmäßig eine Senden-Schaltfläche verwendet.

+0

Ich weiß nicht, was Sie sehen, aber die Schaltfläche hat keinen Typ. –

+0

Ich sehe es nicht in meinem Browser. Alles, was ich habe, ist: n00dle

+0

@SimpleCoder - Ich habe nicht realisiert, dass der Code bezeichnet wurde ... Ich dachte, das war über die '' Taste. Der Code für die Tags "

1

Versuchen

return false; 

nach dem Schlitten Toggle auf der Klickfunktion fro die Toggle-Taste.

1

Von W3Schools:

Geben Sie immer das type-Attribut für die Taste. Der Standardtyp für Internet Explorer ist "Knopf", während in anderen Browsern (und in der W3C Spezifikation) ist es "senden".

http://www.w3schools.com/tags/tag_button.asp

Seien Sie sicher, type="button"

2

Esteban hat eine Lösung angeben. Ein besseres ist in der jQuery tutorial beschrieben:

$(document).ready(function(){ 
    $("a").click(function(event){ 
    alert("As you can see, the link no longer took you to jquery.com"); 
    event.preventDefault(); 
    }); 
}); 
Verwandte Themen