Javascript JQGrid onsetrow事件和jquery.simplemodal.js模态对话框

Javascript JQGrid onsetrow事件和jquery.simplemodal.js模态对话框,javascript,jquery,iframe,jqgrid,simplemodal,Javascript,Jquery,Iframe,Jqgrid,Simplemodal,每次单击JQGrid的一行时,我都试图使用jquery.SimpleModel.js jquery插件显示一个模式窗口 完成此操作后,一旦用户在模式窗口上单击“是”,我将使用从我的行检索到的信息在Iframe上显示文档,如果他们单击“否”,Iframe将显示一个表单来编辑与此文档相关的一些信息。这样做的目的是在用户单击其中一个按钮之前,保持Iframe内容为空。为了实现这一点,我使用JQGrid OnSetrow事件,如下所示: onSelectRow: function () {

每次单击JQGrid的一行时,我都试图使用jquery.SimpleModel.js jquery插件显示一个模式窗口

完成此操作后,一旦用户在模式窗口上单击“是”,我将使用从我的行检索到的信息在Iframe上显示文档,如果他们单击“否”,Iframe将显示一个表单来编辑与此文档相关的一些信息。这样做的目的是在用户单击其中一个按钮之前,保持Iframe内容为空。为了实现这一点,我使用JQGrid OnSetrow事件,如下所示:

onSelectRow: function () {

            var id = $("#tabResBusUbi").getGridParam('selrow');
            var row = $('#tabResBusUbi').jqGrid('getRowData', id);
            viewDocument = false;

            myconfirm('Open the document view?', function () {
                viewDocument = true;            
            });

             if (viewDocument) {

                $('#ifrShowPdf').ready(function () {
                    $('#divLoading').css('display', 'none');
                });

                $('#ifrShowPdf').attr('src', 'resource\\' + row.filepath);
                $('#ifrShowPdf').css('display', 'block');

            } else {
                var rnd = Math.floor(Math.random() * 11);
                $('#ifrShowPdf').attr('src', 'document.asp?r=' + rnd + '&o=d&a=a&p=' + id);
                $('#ifrShowPdf').css('display', 'block');
            }

            return false;

}

function myconfirm(message, callback) {

$('#confirm').modal({

    closeHTML: "<a href='#' title='Close' class='modal-close'>x</a>",
    position: ["20%", ],
    overlayId: 'confirm-overlay',
    containerId: 'confirm-container',
    onShow: function (dialog) {

        var modal = this;
        $('.message', dialog.data[0]).append(message);

        $('.yes', dialog.data[0]).click(function () {                
            if ($.isFunction(callback)) {
                callback.apply();
                $('#confirm-overlay').css('z-index', 5000);
            }                
            modal.close(); 
        });
    }
});

}
onsetrow:function(){
变量id=$(“#tabResBusUbi”).getGridParam('selrow');
var row=$('#tabResBusUbi').jqGrid('getRowData',id);
viewDocument=false;
myconfirm('打开文档视图?',函数(){
viewDocument=true;
});
如果(查看文档){
$('#ifrShowPdf').ready(函数(){
$('#divload').css('display','none');
});
$('ifrShowPdf').attr('src','resource\\\'+row.filepath);
$('#ifrShowPdf').css('display','block');
}否则{
var rnd=Math.floor(Math.random()*11);
$(“#ifrShowPdf').attr('src',document.asp?r='+rnd+”&o=d&a=a&p='+id);
$('#ifrShowPdf').css('display','block');
}
返回false;
}
函数myconfirm(消息、回调){
$('#确认')。模态({
关闭HTML:“”,
职位:[“20%”,],
覆盖ID:“确认覆盖”,
containerId:“确认容器”,
onShow:函数(对话框){
var modal=此;
$('.message',dialog.data[0]).append(message);
$('.yes',dialog.data[0])。单击(函数(){
if($.isFunction(回调)){
callback.apply();
$('确认覆盖').css('z-index',5000);
}                
modal.close();
});
}
});
}
单击该行后,会弹出模式窗口,但Iframe也会显示编辑文档表单,即使我没有单击任何选项按钮。如果在之后单击“是”选项,则会查看文档,但我不打算这样做


如果您能给我一些建议,我将不胜感激。

我不知道
jquery.simplemodal.js
,但似乎您应该移动
if(viewDocument){…}else{…}
部分代码到
myconfirm('openthedocumentview?',function(){/*将它移到这里*/})。此外,
id
onsetrow
回调的第一个参数。您不需要使用
$(“#tabResBusUbi”).getGridParam('selrow')
。顺便说一句,最好使用
$(this)
而不是
$(“#tabResBusUbi”)
。嗨,Oleg,在回调中将viewDocument标志设置为true之前,我已经尝试过这一点,但是在回调中检查内部设置的标志viewDocument值的代码首先执行,因此即使在我设置“return false”以防止它出现在回调中。我认为这与OnSetrow事件冒泡/扩展有关,因为我不知道在这种情况下如何使用e.preventDefault(),就像使用链接一样。