2011-05-10 75 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

相關問題