2011-05-10 79 views
0

在我的ASP.NET应用程序中我使用母版和iFrame作为应用程序的内容部分(也有一个侧栏和菜单栏出iFrame)。访问<select>来自MasterPage(在同一域中)的子iFrame

我的目标是插入一个jQuery/javascript函数来拦截哪个<select>元素获得子iFrame中的焦点。

MasterPage和iFrame都是同一个应用程序的一部分,iFrame不打开外部页面,但是.aspx页面的应用程序,因此是相同的域。

但无论如何,“焦点”事件似乎不起作用,因为内部代码没有执行。

下面是函数:

$("#tabFrame").load(function() { 
    $("#tabFrame").contents().find("SELECT").focus(function() { 
     alert('focus on'); 
    }).change(function() { 
     $.ajax({ 
      type: "POST", 
      url: "../WebService/registerChanges", 
      dataType: "json", 
      contentType: "application/json; charset=utf-8", 
      data: JSON.stringify({ 
       controlName: dropDownId 
      }), 
      success: function(data) { 
       var result = JSON.parse(data.d); 
       if (result.Success) { 
        alert("Successfully found."); 
       } 
      } 
     }) 
    }) 
}) 

由于函数本身是正确的,我想有一些问题试图从外部访问内部的IFrame,但我不能找出哪些。

有什么建议吗? (我使用IE8作为浏览器)

谢谢。

+0

您是否已验证$(“#tabFrame”).load(...)是否正在触发? – Nathan 2011-05-10 09:23:53

+1

因为您位于$(“#tabFrame”)内部。 ..),也许$(“#tabFrame”)不匹配任何东西 - 尝试更改$(“#tabFrame”)。contents()。find(“select”)to $(“select”) – Nathan 2011-05-10 09:25:48

+0

验证iframe被解雇我在$(“#tabFrame”).load()函数后面添加一个简单的警报。 刚开始时我只是用$(“select”),但即使这样也不起作用 – Francesco 2011-05-10 09:40:54

回答

0

现在,它的工作原理:

  • 最初问题是由于iframe,因为我想它加载之前访问它。使用$(“#tabFrame”)。load()函数它在正确的时间被访问。

  • 之后失踪的jQuery引用(JSON)是在问题:( 的起源,但使落后一步,把简单的警告,而不是一个Web服务调用的,我可以管理这个。

以上代码是工作版本

+0

@Natan:谢谢你的提示,他们让我朝着正确的方向前进。 – Francesco 2011-05-10 14:56:25

+0

我的荣幸 - 请记住,如果他们有用,就可以对它们进行投票评分:) – Nathan 2011-05-11 06:32:18

+0

@Natan:我看到可以投票回答,但我怎样才能投票评论? – Francesco 2011-05-11 10:38:27

相关问题