2010-11-15 161 views
1

我似乎在這裏有點困惑。我想要做的是創建一個禁用頁面上所有輸入的Javascript函數,然後是一個啓用頁面上所有輸入的函數。通用Javascript函數調用jQuery函數

這對jQuery非常簡單。我的問題是,如何將這些jQuery函數包裝在傳統的JS函數中?我需要這樣做的原因是因爲我使用ActionScript調用了這些函數。換句話說,我不明白我如何編寫jQuery代碼,然後以傳統的Javascript函數調用方式調用它。

偉大的作品,但不裹在一個函數...

$(document).ready(function() { 
    $(':input').attr('disabled', "disabled"); 
}); 

裹的功能和完全不工作,我究竟做錯了什麼?

function init_lock_test(){ 
    $(':input').attr('disabled', "disabled"); 
} 
+2

你是什麼意思,它不工作?你什麼時候/如何調用'init_lock_test'? – 2010-11-15 00:59:15

+1

其實,你的第一個例子是/寫在一個函數中。該函數被添加到JQuery的ready()方法中,該函數將該函數添加到要在文檔加載完成後自動執行的函數列表中。我敢肯定你不會在任何地方調用你的'init_lock_test()'方法,這意味着實際的方法也不會被執行。 – fwielstra 2010-11-15 01:10:18

回答

5

你不能直接電話中的JavaScript函數從ActionScript網頁,而且也沒有特別的事,作爲一個你應該是using ActionScript's ExternalInterface間接調用JavaScript函數:

import flash.external.ExternalInterface 

// Calls the function init_lock_test 
ExternalInterface.call("init_lock_test"); 
+0

我很瞭解ExternalInterface類,我只是想寫一個可以被函數調用的javascript函數。我遇到的問題是,我沒有強大的JavaScript和jQuery的背景。所以這並不能解決我的問題。 – Ryan 2010-11-15 16:34:45

+0

@Ryan。這不能解決你的問題。我很肯定他的代碼會工作,如果用'functon init_lock_test(){...}包裝你的jquery代碼'如果它不工作,寫下究竟發生了什麼。 – 2010-11-23 17:58:47

1

個人而言,我會避免使用jQuery對於這一點,因爲它不是真正需要的:P
試試這個:

function lockInputs(lock) { 
    var tags, elems, i, j; 
    tags = ['input','button','textarea']; 
    for(i=0; i<tags.length; i++) { 
     elems = document.getElementsByTagName(tags[i]); 
     for(j=0; j<elems.length; j++) { 
      if(lock) elems[j].setAttribute("_lock",elems[j].disabled); 
      elems[j].disabled = lock || elems[j].getAttribute("_lock"); 
     } 
    } 
} 

這應該禁用與lockInputs所有輸入字段(真);並用lockInputs(false)重新啓用它們;
它還保存了禁用狀態,所以任何被禁用的開始保持這種方式。
HTH!

+0

你不想'選擇'鎖定? – alex 2010-11-15 00:58:58

+0

錯過了那一個:p感謝您指出 – 2010-11-15 01:01:14

+0

這是一個簡單查詢的很多代碼。每當你再次需要類似的東西時,你就會重複邏輯。我不喜歡在問題中注入jquery,但它被標記爲jquery,不需要一個不太優雅的解決方案。 – 2010-11-23 17:56:23

0

在傳統的js函數中包裝jquery真的和你的init_lock_test函數一樣容易。您必須在從ActionScript中調用您的函數時遇到問題。試試這個驗證:「jQuery函數」

$(document).ready(function() { 
    init_lock_test(); 
}); 
+0

或簡單地說''(init_lock_test)' – 2010-11-23 19:05:19