0

我正在尝试在我的fancybox上设置一个完成按钮,当用户选中复选框时,它将被标记为完成,复选框值将在fancybox上的div卸载后提交,并且没有提交按钮可以点击,只有当fancybox内的div卸载时才会发送该值,我正在使用ajax提交值,

“问题是当fancybox卸载时,即使我使用onbeforeunload,“function donerem()”也不会执行”

花式盒子

ajaxscript:这应该在fancybox关闭后触发

var R = jQuery.noConflict();
//REMINDER done Submit ===============================================================================
function donerem(){
    if ($('input[name=done]').attr('checked') === 'checked') {
    alert ('checked');
    var ID = $(this).attr("id");
    var dataString = 'msg_id=' + ID;
    R.ajax({
        type: "POST",
        url: "database/clientpanel/wall/donerem.php",
        data: dataString,
        cache: false,
        success: function(html){
                alert ('done');
                var div = document.getElementById("rem" + ID);
                div.parentNode.removeChild(div);

        }
    });


    }
    else
    alert ('not checked');
return false;
});
}

fancybox : 完成按钮

<div align="left" class="post_box" onbeforeunload="donerem()">
<input type="checkbox" id="<?php echo $id; ?>" name="done">
</div>
4

1 回答 1

0

不完全确定我是否理解了这个问题。
要检查它是否被选中,您可以使用以下命令:

if ($('input[name=done]').attr('checked') === 'checked') {
    // selected
}
else {
    // not selected
}

你可以像这样缩短它:

var selected = ($('input[name=done]').attr('checked') === 'checked') ? true : false;

当 fancybox 关闭时,您需要触发 AJAX 调用。
您可以通过为事件分配一个侦听器来做到这一点,如下所示:

$("#some-element").fancybox({
    'scrolling' : 'no',
    'titleShow' : false,
    'onClosed' : function() {
        // make AJAX request
        donerem();
    }
});

从fancybox 博客中找到这段代码:http: //fancybox.net/blog

于 2012-11-19T19:13:27.693 回答