javascript按钮关闭后停止工作

时间:2013-08-06 16:39:12

标签: javascript jquery jquery-ui

我有一个打开对话框的按钮,当我关闭对话框时它会停止工作。当我保存在对话框屏幕上时,它继续正常工作。

这是打开对话框的按钮:

<button class="actionbutton" type="button" onclick="addLitigant();">Add Litigant To Case(s)</button>

它所调用的代码:

function addLitigant(){
    console.log("Calling addLitigant()");
    editDialog.extendedDialog('loadUrl','CRFilingLitigantDialog.do?action=addLitigant', 'Add Litigant');
}

对话框屏幕上的关闭代码:

param['buttons'].push(
        {
            id: "closeButton",
            text: "(C)lose",
            accessKey: "c",
            click: function () {
                jQuery(this).extendedDialog('close');
                jQuery(this).html('');

            }
        }
    );

保存按钮代码:

function () { 
                        console.log("clicking Save");
                        jQuery('#toAssign option').each(function(){
                            jQuery(this).attr('selected',true);
                        });

                        jQuery('#toUnassign option').each(function(){
                            jQuery(this).attr('selected',true);
                        });

                        editDialog.extendedDialog('postUrl', {url: 'CRFilingLitigantDialog.do?action=updateLitigant', formId: '#crFilingLitigantDialogForm', success: function(){
                            litigantTabGet('CRFilingLitigantDetail.do', null);
                            editDialog.extendedDialog ('destroy');
                        }});
                    }

我们正在使用jquery 1.6.2。我已经尝试将console.log语句添加到addLitigant()函数中,但是当我从关闭回来时它不会在控制台中调用任何东西。如果我刷新页面,它会重新开始工作,直到我们从对话框关闭。

这是打开对话框的页面上的即时功能

jQuery(function(){
    console.log("function");

    verificationDialog = jQuery('<div id="verificationDialog"></div>').clerkReviewDialogTemplate({
        height:600,
        width:800,
        title: "Compare Eflex and Icis"
    });

    compareDialog = jQuery('<div id="comparisonDialog"></div>').clerkReviewDialogTemplate({
        height:400,
        width:500,
        title: "Imported Person"
    });

    editDialog = jQuery('<div id="editDialog"></div>').clerkReviewDialogTemplate({
        height:600,
        width:700,
        title: "Edit Litigant",
        buttons: [
            {
                id: "save",
                text: "S(a)ve",
                accessKey: "a",
                click: function () { 
                    console.log("clicking Save");
                    jQuery('#toAssign option').each(function(){
                        jQuery(this).attr('selected',true);
                    });

                    jQuery('#toUnassign option').each(function(){
                        jQuery(this).attr('selected',true);
                    });

                    editDialog.extendedDialog('postUrl', {url: 'CRFilingLitigantDialog.do?action=updateLitigant', formId: '#crFilingLitigantDialogForm', success: function(){
                        litigantTabGet('CRFilingLitigantDetail.do', null);
                        editDialog.extendedDialog ('destroy');
                    }});
                }
            }
        ]
    });

    jQuery('.saveOnChange').bind('change', function(){
        updateLitigants();
    });

    jQuery('.pin').icisAutocomplete({
        mustMatch: true,
        source: function(request, response){
            getQuickAccess(request, response);
        },
        change: function(event, ui){
            updateLitigants();
        }}).each(function(index){
            var data = jQuery(this).data('staging-json');

                jQuery(this).bind('keydown', function(event){
                    return f5_handler({
                        event: event,
                        onf5key: function(){
                            var popup = people_popup({elem: this, event: event, data: data, success: function(data){
                                if(data['pin'] != 'null'){
                                    jQuery(event.currentTarget).val(data['pin']);
                                }
                                if(data['masterPin'] != 'null'){
                                    jQuery('#'+jQuery(event.currentTarget).attr('masterPinField')).val(data['masterPin']);
                                }
                                compareDialog.extendedDialog('close');
                                updateLitigants();
                            }});
                            compareImportedLitigant(data['id'], popup);
                        }
                    });
                });
        });
});

谢谢,

汤姆

2 个答案:

答案 0 :(得分:0)

看起来像一个回帖问题,让你失去绑定事件 - 这是唯一可能导致失去按钮事件的事情 - 尝试用

替换你的直接功能
function pageLoad() {}

请参阅此$(document).ready() and pageLoad() are not the same!

可能有帮助

答案 1 :(得分:0)

我将此代码与旧版本进行了比较。我注意到它在旧版本中有效,我比较了两者。旧版本对编辑对话框代码进行了更改,我向其添加了密码,现在可以正常工作了。

 editDialog = jQuery('<div id="editDialog"></div>').clerkReviewDialogTemplate({
            height:600,
            width:700,
            title: "Edit Litigant",
            close: function(){
                litigantTabGet('CRFilingLitigantDetail.do', null);
                editDialog.extendedDialog ('destroy').remove();
            },
            buttons: [
                {
                    id: "save",
                    text: "S(a)ve",
                    accessKey: "a",
                    click: function () {
                        jQuery('#toAssign option').each(function(){
                            jQuery(this).attr('selected',true);
                        });

                        jQuery('#toUnassign option').each(function(){
                            jQuery(this).attr('selected',true);
                        });

                        editDialog.extendedDialog('postUrl', {url: 'CRFilingLitigantDialog.do?action=updateLitigant', formId: '#crFilingLitigantDialogForm', success: function(){
                            litigantTabGet('CRFilingLitigantDetail.do', null);
                            editDialog.extendedDialog ('destroy');

                        }});
                    }
                }
            ]
        });