[jquery] jak pobrać atrybut NAME z i go zmienić

2012-01-27 11:56:10 Post #1 gość_gość

 
Tak jak w temacie. Na innym forum też napisałem, ale nie dostałem konkretnej odpowiedzi.

Chodzi mi o to, że próbuję dodać przy wprowadzaniu w panelu administracyjnym (autorski sklep) opis produktu w kilku językach. Pomyślałem, żeby zrobić coś na zasadzie zakładek w jquery, żeby po kliknięciu w zakładkę np. EN (english) bez przeładowania zmieniał się atrybut NAME w textarea na np. product_desc_en.

Skrypt jquery mam taki:

1
2
$('.klasa').attr('name''test');
return false;


HTML:
1
<textarea name="" class="klasa"></textarea>


I nie wiem czemu, ale po kliknięciu w zakładkę np. EN nie zmienia mi wartości. Po kliknięciu sprawdzam w źródle strony.

2012-01-27 12:07:45 Post #2 nospor

 
Po kliknięciu sprawdzam w źródle strony.
Źródło strony zawiera jedynie stan na chwilę załadowania strony. Nie uwzględnia w żaden sposób źródła strony po dynamicznych zmianach strony przez js.
Jak chcesz zobaczyć jak wygląda dany element to sobie zainstaluje FireBug dla FireFox i tam po kliknięciu na element można zobaczyć jak faktycznie w danej chwili wygląda

ps:
$('.klasa').attr('name', 'test');
ten kod sam w sobie jest jak najbardziej poprawny

2012-01-27 12:20:52 Post #3 gość_gosc

 
sprawdziłem po stronie php czy jest przesyłany ten atrybut, ale nie ma go...

kurde już nie wiem co z tym jest nie tak.. dla testu zmieniłem atrybut name na value (input) i działa prawidłowo..

teraz skrypt wygląda tak:
1
2
3
4
5
6
$(document).ready(function() {
        $(".lang").click(function(){
            $(".product_desc").attr('name''product_desc_pl');
            return false;
        });
    });

2012-01-27 12:28:22 Post #4 nospor

 
W nowym kodzie nie widze byś zmienił name na value.
1
2
3
4
5
6
7
8
$(document).ready(function() { 
        $(".lang").click(function(){ 
            $(".product_desc").attr('name', 'product_desc_pl'); 
alert(2);
            return false; 
        }); 
    });

Wyswietla sie alert 2? Znaczy ze do kodu dochodzi. Nie? Znaczy ze do kodu nie dochodzi.

Masz to gdzieś wystawione gdzie będzie można to normalnie na zywo sprawdzić a nie zgadywać czy w dobrych miejscach dałeś kod?

2012-01-27 12:34:48 Post #5 gość_gosc

 
Kod mam poprawnie wstawiony, aż takim laikiem nie jestem. Alert się wyświetla.

2012-01-27 12:52:23 Post #6 nospor

 
Tak czy siak by móc ci pomóc najlepiej by było jakbyś to wystawił gdzieś online.

Skoro ci alert wyświetla, znaczy ze to się wykonuje:
$(".product_desc").attr('name', 'product_desc_pl');
I jesli tylko istnieje element o klasie product_desc to atrybut name zostaje mu zmieniony. Nic więcej nie jestem wstanie powiedzieć na podstawie tak małej ilości danych, a już szczegolnie na podstawie braku przetestowania tego online.

2012-01-27 13:05:57 Post #7 gość_gosc

 
wysłałem Ci dane i link do acp przez formularz kontaktowy na tej stronie.

2012-01-27 13:10:16 Post #8 nospor

 
A ja ci odesłałem maila, że dane do logowani podałeś błędne mój ty tajniaku dstp.

2012-01-27 13:17:44 Post #9 nospor

 
Przecież ty nie operujesz na textarea samym w sobie a operujesz na tinyMCE, które to przetwarza textarea na swój sposób.... bez online to z takim opisem sprawy jak twój w zyciu byśmy się nie dogadali :/

Skoro chcesz to zrobić ala zakładki to zrób to na zakładkach a nie na ala zakładkach i problem będziesz miał z głowy. W każdej zakładce oddzielne textarea na dany język i już.

2012-01-27 13:21:24 Post #10 nospor

 
Już nie wspomne o takim szczegole:
$(".product_desc")
szukasz elementu o klasie product_desc a ty w ogole takiego elementu nie masz!! A pisałem ci o tym w tym temacie parokrotnie.

2012-01-27 13:43:50 Post #11 gość_gosc

 
miałem ten parametr, ale go usunąłem przez przypadek - już jest i nadal nie działa..

2012-01-27 13:47:30 Post #12 nospor

 
Wchodzę więc teraz na stronę i... jak nie było tej klasy dla textarea tak nadal nie ma....

2012-01-27 13:57:27 Post #13 gość_gosc

 
już jest

2012-01-27 14:06:16 Post #14 nospor

 
No i teraz jak jest to name się zmienia tak jak mówiłem.

2012-01-27 14:24:21 Post #15 gość_gosc

 
ok, wielkie dzięki, nie wiem jak mogłem to przeoczyć.

Teraz mam inny problem ,ale dotyczący tego samego. Mam linki z nazwami języków + w title mam ich skrót, który będę dokładał do textarea.

1
2
3
<a href="#" title="pl" class="lang">[PL]</a>
<a href="#" title="en" class="lang">[EN]</a>
<a href="#" title="ru" class="lang">[RU]</a>

I teraz w jquery chcę zamienić name w textarea na skrót języka.

Dla testu zrobiłem sobie alert wyświetlający wybierany język, ale zawsze mi pokzuje "pl"..
1
var lang = $(".lang").attr('title'); alert(lang);

2012-01-27 14:28:53 Post #16 nospor

 
var lang = $(this).attr('title');

2012-01-27 14:40:04 Post #17 gość_gosc

 
ok, super

a jeszcze jedno pytanie: robię teraz zmianę zakładek i nie wiem czemu, ale jak zmienię zakładkę za pierwszym razem to pojawia się, a za drugim jak nacisnę na inny język to dodaje się nowe textarea pod tym pierwszym.

1
2
3
4
5
6
7
8
9
    $(document).ready(function() {
        $(".lang").click(function(){
            var lang = $(this).attr('title');
            $(".product_desc").attr('name''product_desc_pl');
            $(".product_desc_main_"+lang).show();
            alert('Wybrałeś język: '+lang);
            return false;
        });
    });

1
2
3
4
5
6
<div class="product_desc_main_pl" style="display: none;">
                                            <textarea name="" cols="87" rows="20" class="product_desc"></textarea>
                                            </div>
                                            <div class="product_desc_main_en" style="display: none;">
                                            <textarea name="" cols="87" rows="20" class="product_desc"></textarea>
                                            </div>

działają na razie tylko dwie zakładki.

2012-01-27 14:43:07 Post #18 nospor

 
Pokazując div dla danego języka, wypadałoby chować pozostałe.

2012-01-27 14:52:19 Post #19 gość_gosc

 
też nie działa ;d

próbowałem tak:
1
$(".product_desc_main_"+lang).css('display''none');

i tak: (całość)
1
2
3
4
5
6
7
8
9
10
$(document).ready(function() {
        $(".lang").click(function(){
            var lang = $(this).attr('title');
            $(".product_desc").attr('name''product_desc_pl');
            $(".product_desc_main_"+lang).hide();
            $(".product_desc_main_"+lang).show();
            alert('Wybrałeś język: '+lang);
            return false;
        });
    });

2012-01-27 14:56:57 Post #20 nospor

 
Nadaj dodatkową klasę ogolną dla tych divów i chowaj divy po tej klasie, a następnie pokazuj diva dla aktualnego języka.
1 2 >

Odpowiedz