我正在尝试创建一个带有花哨框的表单,不幸的是,即使它显示输入元素和正确的标记,单击表单中的任何内容也会导致花哨框刷新。 禁用点击事件气泡,以便您实际上可以进入文本输入框或从选择选项中进行选择而无需刷新花哨的框,我缺少什么?
$(document).ready(function() {
var box = $("#show_mailing_list_signup");
box.fancybox({
'showCloseButton': true,
'scrolling': 'no',
'titleShow': false,
'beforeLoad': function() {
return !hideMailList();
},
'afterLoad': function() {
$('#disableSignup').click(function() {
setCookie("hideSignup", true, 365);
$.fancybox.close();
return false;
});
$("#send_form").click(function() {
return false;
});
}
}).click();
});
<div id="show_mailing_list_signup">
<form id="mailinglistForm" method="post">
<h2>Header</h2>
<label for="name">* Name </label>
<p>
<input name="fname" type="text" id="name" minlength="4" maxlength="15" />
</p>
<br />
<label for="email">* Email </label>
<p>
<input name="email" type="text" id="email" />
</p>
<br />
<label for="state">Pick your favorite school</label>
<p>
<select id="state">
<option>NY</option>
<option>IL</option>
</select>
<select id="city">
<option>Schenectedy</option>
<option>Fishkill</option>
</select>
</p>
<p>
<input id="schoolSearch" type="text"/>
</p>
<%--default to the most select school--%>
<p style="margin-top: 20px;">
<input value="Join Now" type="button" name="send_form" id="send_form" />
</p>
</form>
<p class="details">blah</p>
<a href="#" id="disableSignup">don't show again</a>
</div>
当你这样做时
var box = $("#show_mailing_list_signup");
box.fancybox().click()
元素<div id="show_mailing_list_signup">
(包含您在FancyBox中打开的表单)成为Fancybox的触发器和目标,因此您在该容器内click
的任何内容都将一遍又一遍地触发Fancybox。
将选择器更改为其他内容以定位您的表单,例如
var box = $(".fancybox");
box.fancybox({
// API options here
}).click();
注意:您仍然需要一个带有class="fancybox"
的 html 元素(通常是链接)来定位您的form
,例如:
<a class="fancybox" href="#show_mailing_list_signup"></a>