3

リンクをクリックすると、ポップアップが開き、「お問い合わせフォーム」が表示されます。それはうまく開き、検証し、送信し、電子メールを送信します。フォームを閉じようとすると問題が発生します。

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&eacute;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&eacute;l&eacute;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&eacute;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>

onClickCloseにアラートを追加するだけでも試しましたが、何も起こりません。

4

4 に答える 4

12

以下を使用できます。

function onClickClose(){
    $("#blanket").hide();
}

*JQuery で表示プロパティの値を後で復元するためにキャッシュに保存したくない場合 (ここに記載されているように)、次のように使用できます。

function onClickClose(){
    $("#blanket").css("display","none");
}
于 2012-10-13T00:46:55.787 に答える
3
$("#close").click(function() {
 $("#blanket").hide();
});
于 2012-10-13T00:49:51.667 に答える
1

実際、あなたの問題は問題ではなくonClickClose、そのwindow.onResize()直前です。window.onresizeキャメルケースではなく、関数ではなくイベントハンドラーである必要があります。あなたがそこに持っているべきものがあります

window.onresize = function () {
    if ($("#blanket").length > 0) {
        b.css("width", window.innerWidth);
        b.css("height", window.innerHeight);
    }
};

あなたがそれを持っていた方法はエラーを引き起こしていました、そしてその後onClickClose関数は解析されていませんでした。MDNでそれについてすべて読んでください。

PbxManの答えが機能する理由は、巻き上げのためです。関数式から関数宣言に変更することで、その関数はスコープの最上位に引き上げられ、エラーの前に解析されますしたがって、それは機能しますが、実際には実際の問題を回避しています。

Angus Crollは、関数宣言と関数式およびホイストについて優れた投稿をしています。

于 2012-10-13T01:38:06.170 に答える
0
$('#close').click(
function(abc){
    $("#blanket").css("display","none");
abc.preventDefault(); // this will cancel the default action for href
}
于 2012-10-13T02:24:37.673 に答える