Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> jQuery i jakby onload, read dla diva
expert
post 10.01.2013, 18:51:25
Post #1





Grupa: Zarejestrowani
Postów: 211
Pomógł: 4
Dołączył: 29.10.2008

Ostrzeżenie: (0%)
-----


Mam taki kod:
Kod
$("input[type='text']").keypress(function(e) {

    })


Chodzi o oto, że chce przed keypress dac coś w stylu pe='text']").ready(function(){}).keyp lub pe='text']").load(function(){}).keyp . Jednak żadne z tych nie działa. Czy jest coś takiego jak jakby .create. Wiadomo o co chodzi?

Ten post edytował expert 10.01.2013, 19:59:34
Go to the top of the page
+Quote Post
kamil4u
post 10.01.2013, 20:51:07
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Cytat
Wiadomo o co chodzi?

Nie wiadomo. Napisz jeszcze raz, opisując znacznie dokładnie.


--------------------
Go to the top of the page
+Quote Post
expert
post 10.01.2013, 21:16:16
Post #3





Grupa: Zarejestrowani
Postów: 211
Pomógł: 4
Dołączył: 29.10.2008

Ostrzeżenie: (0%)
-----


To inaczej.
Powiedzmy mam na stronie klika input, z czego dwa są typu text. Do nich odwołuje się za pomocą $("input[type='text']"). Chce je zamienić na <input type="password">, ale za pomocą attr nie można zmieniać typów elementów, które są już na stronie. Można jedynie wywalić stary element i zastąpić go nowym.

Chce skopiować też do nowego input wszystkie parametry starego np. class, id, value itp. Czyli chce zamienić type 'text' na type='password'. Dla tego myślałem, żeby zrobić to w funkcji typu load albo ready dla input.

Zobaczę, bo może each coś da sie wykombinować.
Go to the top of the page
+Quote Post
kamil4u
post 11.01.2013, 13:58:57
Post #4





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Cytat
ale za pomocą attr nie można zmieniać typów elementów

Nie używam z reguły jQuery, ale z tego co pamiętam to można. Nic nie stoi na przeszkodzie. A jak z jakiś niepojętych dla mnie względów się nie da to w czystym JS da się na pewno, bo nie raz to robiłem. Więc pobierz referencję do elementu( get ) i zmienić atrybut( element.setAttribute )

Pokaż jak próbowałeś z attr.


--------------------
Go to the top of the page
+Quote Post
expert
post 11.01.2013, 14:26:38
Post #5





Grupa: Zarejestrowani
Postów: 211
Pomógł: 4
Dołączył: 29.10.2008

Ostrzeżenie: (0%)
-----


Dla przykladu:
  1. $("input[type='text']").attr("type","password")


Co ciekawe w wordpress przy zmianie hasła skrypt zmienia jakoś atrybut type. Póki co zrobiłem to tak:
  1. $("input[type='text']").each(function() {
  2. var old_input = $(this);
  3. var new_input = $("<input type='password' />");
  4. for (j = 0; j < old_input[0].attributes.length; j++) {
  5. var n = old_input[0].attributes[j].name;
  6. var v = old_input[0].attributes[j].value;
  7. if(n != 'type'){
  8. new_input.attr(n,v);
  9. }
  10. }
  11. new_input.insertBefore(this);
  12. }).remove();

http://jsfiddle.net/mtYWe/
Go to the top of the page
+Quote Post
kamil4u
post 11.01.2013, 15:42:04
Post #6





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


No i ten pierwszy kod działa. Nie wiem po co kombinujesz. http://jsfiddle.net/mtYWe/1/


--------------------
Go to the top of the page
+Quote Post
expert
post 11.01.2013, 20:13:51
Post #7





Grupa: Zarejestrowani
Postów: 211
Pomógł: 4
Dołączył: 29.10.2008

Ostrzeżenie: (0%)
-----


Cytat(kamil4u @ 11.01.2013, 15:42:04 ) *
No i ten pierwszy kod działa. Nie wiem po co kombinujesz. http://jsfiddle.net/mtYWe/1/


Hmmm... Faktycznie, to coś musiałem sknocić pisząc kod u siebie.
Go to the top of the page
+Quote Post
Pawel_W
post 11.01.2013, 20:16:28
Post #8





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

Ostrzeżenie: (0%)
-----


Cytat(kamil4u @ 11.01.2013, 13:58:57 ) *
Nie używam z reguły jQuery, ale z tego co pamiętam to można. Nic nie stoi na przeszkodzie. A jak z jakiś niepojętych dla mnie względów się nie da to w czystym JS da się na pewno, bo nie raz to robiłem. Więc pobierz referencję do elementu( get ) i zmienić atrybut( element.setAttribute )

Pokaż jak próbowałeś z attr.

niektóre przeglądarki (z tego co pamiętam to np. IE bądź Chrome) nie pozwalają na zmianę typu inputa ze względów bezpieczeństwa smile.gif
Go to the top of the page
+Quote Post
expert
post 11.01.2013, 20:26:47
Post #9





Grupa: Zarejestrowani
Postów: 211
Pomógł: 4
Dołączył: 29.10.2008

Ostrzeżenie: (0%)
-----


Jednak nie działa, kąbinuję czemu.
http://siekier.pl/test.html
Go to the top of the page
+Quote Post
kamil4u
post 11.01.2013, 20:34:00
Post #10





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Rzeczywiście jQuery zabrania:
Cytat
Note: jQuery prohibits changing the type attribute on an <input> or <button> element and will throw an error in all browsers. This is because the type attribute cannot be changed in Internet Explorer.


Zrób tak jak pisałem( pod IE możliwe, że się nie da zrobić ze względów bezpieczeństwa ):
Kod
$(function() {
    $("input[type='text']").each(function(i,j){
        $(this).get(0).setAttribute("type","password");
    });
});


--edit--
Cytat
kąbinuję czemu.

http://www.sjp.pl/kombinowa%E6

Ten post edytował kamil4u 11.01.2013, 20:35:07


--------------------
Go to the top of the page
+Quote Post
expert
post 11.01.2013, 21:39:46
Post #11





Grupa: Zarejestrowani
Postów: 211
Pomógł: 4
Dołączył: 29.10.2008

Ostrzeżenie: (0%)
-----


Cytat(kamil4u @ 11.01.2013, 20:34:00 ) *
Zrób tak jak pisałem( pod IE możliwe, że się nie da zrobić ze względów bezpieczeństwa ):
Kod
$(function() {
    $("input[type='text']").each(function(i,j){
        $(this).get(0).setAttribute("type","password");
    });
});


To działa najpewniej. IE z $.attr() ma jakieś problemy, choć pod innymi przeglądarkami działa ok.

EDIT:

Wiem chyba z czego wynika różnica działania skyptu. W JsFiddle jak ustawię jQuery(edge) to działa, ale jak ustawie samo jQery np. 1.8.2 to już nie działa. Sprawdzałem po FF i IE. Czegoś mi w moim skrypcie brakuje...

EDIT:
Jest jakiś inny kod http://code.jquery.com/jquery-git.js i http://code.jquery.com/jquery.js Nie wiem na czym polega różnica.

Ten post edytował expert 11.01.2013, 22:43:41
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:16