从iframe在主窗口中打开Jquery对话框

时间:2010-07-05 15:47:51

标签: jquery jquery-ui jquery-ui-dialog

我一整天都在尝试这个......

我在iframe中有一个表单,它包含用于表单验证的jquery验证。我只是希望当数据无效时,jquery对话框出现在主页面中,出现在top.document中。

这是我在iframe上的代码:

$("#dialog-message", top.document).dialog({                                                                      
             modal: true,
             autoOpen: false,
             buttons: { Ok: function() {
                 $(this).dialog('close');
               }
             }
          });

这是一段应该激活对话框的代码:

$("#search-form").validate({ 

        rules: { datapicker: {required: true,dateDE: true}},
        debug: true,
        messages: {
         datapicker: {
            required: "És necessari introduïr una data",  
            date: "S'ha d'afegir una data correcte: dd/mm/aaaa"
         }
        },
        errorPlacement: function(error, element) {
                error.prependTo($('#dialog-message', top.document));
        },
        errorLabelContainer: $("#dialog-message ul", top.document),
        showErrors: function () {
            $('#dialog-message',top.document).dialog('open');
            this.defaultShowErrors();
        }
});

所以...这不起作用......如果我尝试这个指令一切正常

$("#dialog-message", top.document).css(...) //works fine!

我认为选择器$ -top.document和对话框函数可能存在一些问题...或者可能不可能使用dialog()来表示不同帧中的div ...

请帮忙! :d

提前致谢

1 个答案:

答案 0 :(得分:2)

让iframe中的代码引用父代,并调用父代的JavaScript函数,如下所示:

// in iframe code:
parent.doSearchFormValidate();

// parent page has definition for doSearchFormValidate().
function doSearchFormValidate() {
  $("#search-form").validate({ 
  ...
  });
}