Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SOLVED][jQuery] Jak przekazać zmienną poza funkcję
Forum PHP.pl > Forum > XML, AJAX
perhydrol
W jaki sposób przekazać zmienną poza funkcję, jQuery :/

mając funkcję:

  1. jQuery.validator.addMethod("name", function(value) {
  2. var message = ' ';
  3. if (value) {
  4. message = 'komunikat pwoodzenia';
  5. return false ;
  6. }
  7. else{
  8. message = 'komunikat nie powodzenia';
  9. return true;
  10. }
  11. }, "Komunikat który chciał bym zmieniać");


chciał bym w miejsce "Komunikat który chciał bym zmieniać", została przekazywana zmienna message
erix
[JAVASCRIPT] pobierz, plaintext
  1. return {value: false/true, message: 'zuo'}
[JAVASCRIPT] pobierz, plaintext

?
perhydrol
Hmm, no tak, a jeszcze jak się później odwołać poprawnie to zmiennej message, a raczej elementu?? :/
zegarek84
Cytat(perhydrol @ 7.07.2010, 12:18:32 ) *
Hmm, no tak, a jeszcze jak się później odwołać poprawnie to zmiennej message, a raczej elementu?? :/
a może w Twoim przypadku najprościej by było zapisać wartość w jakiejś składowej zmiennej globalnej po czym do niej się odwołaćquestionmark.gif - żeby w globalu sobie śmieci za wiele nie robić to tam jakąś tablicę lub obiekt json [odpowiednik tablicy asocjacyjnej]...

ale w skrócie to zamiast message to window.mesasage=wartość a odwołanie przez window.message... dało by się to optymalniej gdyż w tym przypadku zmienna będzie szukana w górę w każdym obiekcie nadrzędnym aż do obiektu window - ale trza by więcej tłumaczyć...

a i jeszcze jedno - co prawda dawno w js nie pisałem ale o ile dobrze pamiętam to jeśli zmienną nie poprzedza się przez var to bodajże także ona ląduje w obiekcie window - więc wystarczyło by zrobić tak jak zrobiłeś nie pisząc var przed zmienną a potem odwołać się po prostu do tej zmiennej bez żadnego window - o ile ta zmienna nie będzie zadeklarowana w jakimś nadrzędnym obiekcie jako prywatna...
perhydrol
No niestety z tymi zmiennymi globalnymi to średni pomysł,
po za tym i tak będzie problem z pobraniem tej wartości i kolejno problemy z wyświetleniem ich,
na chwilę obecną wydaje mi się że biblioteka jQuery, nie zostało odpowiednio wyposażona w funkcje umożliwiające zmianę tych komunikatów. Oczywiście mogę się mylić ponieważ moja znajomość JS, i frameworków jQ jest znikoma.

jeśli kogoś interesowało by rozwiązanie, z przekazaniem innego komunikatu niż string podawany jako parametr do addMethod( name, method, [message] ) (pomijając ostatni parametr "message"), to podpowiem że można to zrobić w taki sposób:


  1. jQuery.validator.addMethod("field_name", function(value) {
  2. var message = ' ';
  3. if (value) {
  4. $.validator.messages['field_name'] = 'Komunikat niepowodzenia';
  5. return false ;
  6. }
  7. else{
  8. $.validator.messages['field_name'] = 'komunikat nie powodzenia';
  9. return true;
  10. }
  11. });


-pozdrawiam, i dzięki za zainteresowanie i intencje smile.gif
zegarek84
tyle, że zrobiłeś prawie tak jak ja Ci pisałem a to var message='' możesz wywalić...

a dokładniej utworzyłeś zmienną co prawda nie w window a w obiekcie zawierającym metodę .addMethod czyli w obiekcie jQuery.validator - właśnie pisałem, że zmienna jest szukana w górę i trochę dłuższy temat opisywać zasięgi zmiennych w js ^^... a i dalej to jQuery jest w window czyli zmienną zapisałeś dokładnie w window.jQuery.validator lub jak wolisz w window.$.validator...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.