我遇到一个问题,就是在发现错误/登录失败时如何保持彩盒模式叠加打开,但关闭它,并在成功提交表单后刷新父窗口。这应该与Digg登录过程完全相同,其中模态覆盖保持打开并且页面顶部出现错误。但是,在我的代码中,我直接在表单上有错误的间距。说到代码......
服务器端:
我在服务器端使用Codeigniter,但希望PHP人员能够理解这一点:
<div class="login_box clearfix" id="login_box">
<div class="left">
<?php if (validation_errors()): ?>
<?php echo $template['partials']['notices']; ?>
<?php endif; ?>
<?php echo form_open('users/login', array('id'=>'login')); ?>
<label for="email" class="inlined"><?php echo lang('user_email'); ?></label>
<input type="text" id="email" name="email" maxlength="120" class="input-text"/>
<div class="password_holder">
<label for="password" class="inlined"><?php echo lang('user_password'); ?></label>
<input type="password" id="password" name="password" maxlength="20" class="input-text" />
<?php echo anchor('users/reset_pass', 'Forgot?', array('class' => 'inline-anchor'));?>
</div>
<div class="submit_holder">
<input type="submit" value="<?php echo lang('user_login_btn') ?>" name="btnLogin" class="button gray"/>
<input type="checkbox" id="remember_me" name="remember" value="1" />
<label for="remember_me" class="checkbox-label"><?php echo lang('user_remember'); ?></label>
</div>
<?php echo form_close(); ?>
<div class="bottom">
<p>Don't have an account? <?php echo anchor('register', 'Create one.');?></p>
</div>
</div>
<div class="vr"></div>
<div class="right">
// Reasons to register go here.
</div>
FRONT END CODE - 这是我用Colorbox得到的,我无法弄清楚如何让我的提交错误重新触发colorbox,但确保它关闭并在成功登录后刷新父窗口。现在,它几乎按照我想要的方式运行,但仍然遥远。
$('#loginButton').colorbox({
transition:'elastic',
speed:600,
initialWidth: 100,
initialHeight: 100,
width: 670,
height: 290,
scrolling: false,
overlayClose: false,
href: $(this).attr('href'),
});
答案 0 :(得分:1)
经过几天的挖掘,我偶然发现了一些教程,并阅读了Colorbox主页上的常见问题解答。
这里的关键是我试图将一个完整的HTML文档加载到colorbox中,当我应该使用iframe或调用我试图进入Colorbox的确切元素时。另一个问题是我不得不利用Colorbox提供的onComplete回调再次调用Colorbox,这是通过prepForm函数完成的。
希望此代码可以帮助遇到此问题的其他人:
function prepForm(){
$("#login").ajaxForm({
dataType: 'json',
success: function(data){
if (data.success === false) {
$.fn.colorbox({
transition:'elastic',
speed:600,
width: 670,
height: 290,
scrolling: false,
overlayClose: false,
html: data.result,
onComplete: prepForm,
href:$(this).attr('href')+" div#login_box",
});
} else {
location.reload(true);
// Reload the parent and close Cbox
$.fn.colorbox.close();
}
},
});
}
$('#loginButton').click(function(e){
e.preventDefault();
$(this).colorbox({
transition:'elastic',
speed:600,
width: 670,
height: 290,
scrolling: false,
overlayClose: false,
onComplete: prepForm,
href:$(this).attr('href')+" div#login_box",
});
});