jQuery-Hide & Show Form
Habe ich einen link, der bei anklicken der Schaltfläche öffnet Sie und zeigt ein "Kontakt-Formular". Öffnet es, überprüft, sendet & E-Mails in Ordnung. Ich bin in Probleme laufen, wenn ich versuche das Formular zu schließen.
HTML
<div id="blanket"><div id="myForm">
<p style="text-align:right; margin: 0; padding: 0;"><a href="#" id="close" onClick="onClickClose();">Close</a></p>
<table width="400" border="0" cellspacing="0" cellpadding="5"><tr><td>
<form name="form1" method="POST" action="_sendmail.php" onSubmit="return CheckAll(this);">
<input name="fieldnm_1" type="radio" value="M." /> M.
<input name="fieldnm_1" type="radio" value="Mme" /> Mme.
</td></tr><tr><td width="400">
<input name="fieldnm_2" type="text" id="left_form" placeholder="Prénom *" tabindex="1"/><input name="fieldnm_4" type="text" id="right_form" placeholder="Courriel *" tabindex="3"/>
</td></tr><tr><td width="400">
<input name="fieldnm_3" type="text" id="left_form" placeholder="Nom *" tabindex="2"/>
<input name="fieldnm_5" type="text" id="right_form" placeholder="Téléphone *" tabindex="4"/>
</td></tr><tr><td width="400">
<select name="fieldnm_7" id="left_list" >
<option value="">Nombre de chambres *</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select name="fieldnm_8" id="right_list">
<option value="">Nombre de pieds carrés</option>
<option value="600-800">600-800</option>
<option value="800-1000">800-1000</option>
<option value="1000-1250">1000-1250</option>
<option value="Plus de 1250">Plus de 1250</option>
</select>
</td></tr><tr><td>
<textarea name="fieldnm_9" id="comment" placeholder="Commentaire*" tabindex="5"></textarea>
</td></tr><tr><td>
<input type="submit" name="Submit" value="Soumettre" tabindex="6">
<input type="reset" name="Submit2" value="Reset">
</td></tr></table></form></div>
</div>
JS
<script type="text/javascript">
onClickRegister = function(){
b = $("#blanket");
b.css("display","block");
b.css("position","fixed");
b.css("width", window.innerWidth);
b.css("height", window.innerHeight);
b.css("background-color", "rgba(0, 0, 0, 0.7)");
f=$("#myForm");
f.css("position", "fixed");
f.css("top", "33%");
f.css("left", "33%");
}
window.onResize(function(){
if($("#blanket").length>0){
b.css("width", window.innerWidth);
b.css("height", window.innerHeight);
}
});
onClickClose = function(){
$("#blanket").css("display","none");
}
</script>
Habe ich versucht, auch nur das hinzufügen einer Warnung an den onClickClose und nichts passiert.
verwenden Sie eine browser-Konsole zu finden, dann beheben Sie die Fehler, die geworfen werden
Wenn ich auf die Schaltfläche schließen der Konsole sagt : onClickClose ist nicht definiert. Also meine Vermutung ist, dass es nicht die Feststellung der Funktion.
Wenn ich auf die Schaltfläche schließen der Konsole sagt : onClickClose ist nicht definiert. Also meine Vermutung ist, dass es nicht die Feststellung der Funktion.
InformationsquelleAutor Black Bird | 2012-10-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie verwenden:
*wenn Sie nicht möchten, JQuery speichern im cache der Wert der display-Eigenschaft, um später wiederhergestellt werden (wie dokumentiert hier) du könntest einfach:
.hide()
wäre besserDas war dumm, haha. Danke!!!
als ersten Kommentar schlage vor, Sie tun sollten, $("#Decke").hide(); und da man sich mit jquery sollten Sie die andere Antwort, schreiben Sie den click-handler zu entfernen und den onclick aus dem html
ich bevorzuge die Funktionen so geschrieben. vielleicht braucht man var? var myfunc = function () {}
InformationsquelleAutor PbxMan
InformationsquelleAutor Todd Horst
Eigentlich Ihr problem ist nicht mit
onClickClose
es diewindow.onResize()
direkt davor. Es solltewindow.onresize
, keine Kamel-Fall, und es ist keine Funktion, sondern ein Ereignis-handler. Was sollten Sie dort haben, istDen Weg, Sie hatte es verursacht einen Fehler, und anschließend die
onClickClose
Funktion war nicht immer analysiert werden. Lesen Sie alles über es auf MDN.Den Grund PbxMan Antwort funktioniert, weil der Hub. Durch ändern von einer Funktion Ausdruck eine Funktionsdeklaration, die Funktion wird gehisst an die Spitze der
Umfang, und so hat bekommen geparst, bevor Sie den Fehler. So, während es funktioniert, es ist eigentlich ein side-stepping der aktuellen Ausgabe.
Angus Croll hat einen guten Beitrag auf Funktionsdeklarationen versus Funktion-Ausdrücke und hochziehen.
myFunction = function() { }
undfunction myFunction() { }
in diesem Fall sollten Sie beide arbeiten. Aber aufgrund der Fehler inonResize
Einstellung die Funktion als eine variable ignoriert wurde, während die andere Art des Schreibens, es ist weniger spröde, denke ich.stackoverflow.com/questions/336859/... Sollte keinen Unterschied machen, in diesem Fall.
In diesem Fall ist es tatsächlich nicht egal, durch hochziehen, siehe Ergänzung zu meiner Antwort.
Was ich meinte war "es sollte keinen Unterschied machen mit Ihrem code, wenn Sie die Fehler beheben, die break-code". Beheben Sie den Fehler mit onresize und beide Arten der Deklaration der Funktion wird funktionieren.
Ja, ich habe verstanden 😉 Es war nur etwas interessant ist, real-life-Fall von nicht-sofort-offensichtliche Folgen der Unterschied zwischen den beiden.
InformationsquelleAutor ultranaut
InformationsquelleAutor Catalin Sterian