2010-11-15 7 views
1

Я немного смущен, кажется, здесь. То, что я пытаюсь сделать, это создать функцию Javascript, которая отключит все входы на странице, а затем функцию, которая позволяет все входы на странице.Функция jQuery, вызванная функцией Generic Javascript

Это было довольно легко с помощью 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'? –

+1

Собственно, ваш первый пример/записан/записан в функции. Функция добавляется в метод JQuery ready(), который добавляет функцию в список функций, которые будут автоматически выполняться после загрузки документа. Я почти уверен, что вы не вызываете метод 'init_lock_test()' нигде, то есть фактический метод также не выполняется. – fwielstra

ответ

5

Вы не можете непосредственно вызов JavaScript функции на веб-странице с помощью ActionScript, и нет никакого особого понятия, как «функции JQuery.» Вы должны быть 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

+0

@ Ryan. Как это не касается вашего вопроса. Я уверен, что его код будет работать, если вы завернете свой код jquery с помощью функции functon init_lock_test() {...} 'Если он не работает, напишите точно, что происходит. –

1

Лично я бы не использовать JQuery для этого, потому что это на самом деле не нужны: р
Попробуйте это:

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

Вы не хотите, чтобы 'select' был заблокирован? – alex

+0

Пропущено это: p Спасибо за указание –

+0

Это много кода для простого запроса. И вы будете дублировать логику каждый раз, когда вам понадобится что-то подобное. Мне не нравится вводить jquery в вопросы, но это было помечено как jquery, не нужно менее элегантное решение. –

0

Обтекание jquery в рамках традиционной функции js действительно так же просто, как и ваша функция init_lock_test. У вас должна быть проблема с вызовом вашей функции из ActionScript. Попробуйте проверить:

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

или просто '$ (init_lock_test)' –

Смежные вопросы