[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.
Odpowiedz