ďťż

[JavaScript]Automatyczne uzupełnianie forumlarza - pomoc!

       

Podstrony


telcocafe

Witam,

może najpierw przedstawię sytuację. Chcę, aby JS wypełnił mi dany formularz na stronie.
Ale to tylko symulator, i tu się pojawia problem... Każdego razu, gdy na jednej stronie jest dostępny ten formularz, Admini bawią się z Nami w kotka i myszkę - dodają w ID zamiast "FirstName", np. "__First_Name". Jeden "typek z branży" podobno znalazł na to rozwiązanie.... JS rozpoznaje zawsze, iż jest to FirstName, niezależnie od podłóg czy losowych ciągów cyfr i liter.

Mój skrypt wygląda tak:
var country = "Poland"; var countryCode = "PL"; var phoneOne = "000"; var phoneTwo = "000"; var phoneThree = "000"; var phoneWhole = "0048xxxxxxxxx"; var firstName = "imie"; var lastName = "nazwisko"; var address1 = "adres"; var address2 = ""; var city = "miasto"; var state = "PL"; var zip = "kod pocztowy"; document.getElementById("state").value = state; document.getElementById("statesClicker").getElementsByTagName("SPAN")[0]. innerHTML = state; document.getElementById("stateDetails").value = state; document.getElementById("country").value = country; document.getElementById("countryClicker").getElementsByTagName("SPAN")[0] .innerHTML = country; document.getElementById("countryDetails").value = country; window.location= "java script: manipulateForm('"+countryCode+"');"; document.getElementById("phoneOne").value = phoneOne; document.getElementById("phoneTwo").value = phoneTwo; document.getElementById("phoneThree").value = phoneThree; document.getElementById("phoneWhole").value = phoneWhole; document.getElementById("firstName").value = firstName; document.getElementById("lastName").value = lastName; document.getElementById("address1").value = address1; document.getElementById("address2").value = address2; document.getElementById("city").value = city; document.getElementById("state").value = state; document.getElementById("zip").value = zip; document.getElementById('recaptcha_response_field' ).focus();

Jakieś sugestie względem tego, aby nie trzeba było zgadywać, co administracja zrobi? Niestety nie znam tak dobrze JS, dlatego pytam Was....

Kolega z forum powiedzial mi tylko tyle:
1.
nie wiem po co takiego bota piszesz w JS.. jak to ma dzialac?
nie lepiej PHP+curl i od razy POSTy słać?

2: regularne zamienianie
Kod
costam = "__FirstName".replace(/[^a-zA-Z0-9]+/,"");
alert(costam);
Ale w sumie Ci napisałem "odwrotnie"..

jQuery + plugin do selektorów po wyrażeniach regularnych..


Niestety jestem zielony i dopiero zaczynam szczerze mowiac. I prosze o wytlumaczenie łopatologiczne.



Skoro zaczynasz, to się weź bardziej za naukę, a nie będziesz miał takich trudności.
Jeśli chodzi o kod, to zamiast pobierać każdy element oddzielnie, to odszukaj formularz i go przetwórz. W natywnym JavaScripcie byłoby trochę kodu, ale w jQuery tylko odrobinkę:$('form[name=nazwa_formularza_czy_coś_takiego] input').each(function() { switch (this.name.replace(/[^a-z0-9]+/i, '')) { case 'state': this.value = 'PL'; break; // etc. case 'recaptcharesponsefield': $(this).focus(); break; } });
Użytkownik andrzej_aa edytował ten post 02 maj 2010, 22:56

Skoro zaczynasz, to się weź bardziej za naukę, a nie będziesz miał takich trudności.
Jeśli chodzi o kod, to zamiast pobierać każdy element oddzielnie, to odszukaj formularz i go przetwórz. W natywnym JavaScripcie byłoby trochę kodu, ale w jQuery tylko odrobinkę:$('form[name=nazwa_formularza_czy_coś_takiego] input').each(function() { switch (this.name.replace(/[^a-z0-9]+/i, '')) { case 'state': this.value = 'PL'; break; // etc. case 'recaptcharesponsefield': $(this).focus(); break; } });


Ale teraz mam maly problem... Nie moge tego użyć w GreaseMonkey
Czytalem że, można użyć tego: @require
Ale jakoś mi nie wychodzi... Mam zrobic osobny plik z jQuery? tak?
A i jeszcze jak zrobić wybór kraju ponieważ tam jest po naciśnięciu rozwijana lista i trzeba wybrać kraj?
I jeszcze jedno :P Czy to bedzie zawsze uzupełniać nawet po zmianie nazwy pola z "firstName" na "_firstName_"?
Użytkownik Kicha edytował ten post 03 maj 2010, 09:36
Widzę że znowu kolejna osoba bawi się tu w Lockerz.com

Wystarczy trochę poszukać na necie jak coś takiego zrobić.

// ==UserScript== // @name * // @namespace * // @description * // @include * // @include * // @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js // @version 0.0 // ==/UserScript==
Użytkownik Qenix edytował ten post 03 maj 2010, 12:05


Nie az tyle bawi co pomaga :)
Szukalem moze zle szukam albo nie wiem czego ale nie moge znalezc.

Ale nie wiem co mi nie dziala... Moze pokaze kod bo moglem cos zle zrobic...
// ==UserScript== // @name * // @namespace * // @description * // @include * // @include * // @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js // @version 1.0 // ==/UserScript== $('form[name=nazwa_formularza_czy_coś_takiego] input').each(function() { switch (this.name.replace(/[^a-z0-9]+/i, '')) { case 'state': this.value = 'PL'; break; case 'state': this.value = '--'; break; case 'country': this.value = '--'; break; case 'countryCode': this.value = '--'; break; case 'phoneOne': this.value = '--'; break; case 'phoneTwo': this.value = '--'; break; case 'phoneThree': this.value = '--'; break; case 'phoneWhole': this.value = '--'; break; case 'firstName': this.value = '--'; break; case 'lastName': this.value = '--'; break; case 'address1': this.value = '--'; break; case 'address2': this.value = ''; break; case 'city': this.value = '--'; break; case 'zip': this.value = '--'; break; case 'recaptcharesponsefield': $(this).focus(); break; } });

I nie wiem jak zrobic aby wybieral kraj z listy rozwijanej. Chyba ze jest dobrze :P
Oczywiscie zeby nie bylo w include podaje strone ale nie dziala.
Pewnie cos zle robie, no nic czekam na odpowiedz wasza.
Dziekuje za dotychczasowo udzieloną pomoc.

Teraz moze i sie domyslam co zle robie... Tylko jak dac ten require do pliku mojego z skryptem uzupelniajacym... Jesli dobrze mysle... Juz sam sie pogubiłem i nie wiem co pisze. Musze to na spokojnie przemyslec.

Wiem czego niewiem... Poprostu co zrobic z tym kodem jQuery... Gdzie go zapakowac itd. Z tym mam pierwszy raz do czynienia.

To tak juz wiem jak odwoływać tam te @require... Tylko czy ten kod jest poprawny i powinien uzupelniac mi?
Użytkownik Kicha edytował ten post 04 maj 2010, 16:40
To nie jQuery jest głupi, jak napisałeś w SB. Zauważ do czego się odwołujesz:$('form[name=nazwa_formularza_czy_coś_takiego] input')


To nie jQuery jest głupi, jak napisałeś w SB. Zauważ do czego się odwołujesz:$('form[name=nazwa_formularza_czy_coś_takiego] input')

Dziekuje :) Już działa... Po twojej wypowiedzi tak siedziałem i myślałem o co może chodzić a odpowiedz była łatwiejsza niż myślałem.
Tylko teraz tak, nie wiem jak zrobic dwie rzeczy.
Po pierwsze tutaj wszystkie informacje sa do wpisania a państwo trzeba wybrać. Jak to zrobić? Czekam na kolejną podpowiedz.
Druga sprawa to, że gdy id pola jest firstName to uzupełnia gdy _firstName tez ale jak już _firstName_ sie pojawia nie dziala. Jaka moze byc tego wina?

Nie wiem jak wygląda formularz, ale zapewne do do państw są przypisane wartości, więc nie podajesz this.value='pl', a this.value='777' (tylko przykład! numer do zmiany na właściwy).
W jaki sposób nie działa z wartością "_firstName_"? Dodaj domyślną wartość w instrukcji przełączającej, to może jakoś sprawdzimydefault: alert(this.name.replace(/[^a-z0-9]+/i, ''));(Za ostatnim case...break jeśli nie wiesz gdzie).
Użytkownik andrzej_aa edytował ten post 05 maj 2010, 21:08
Moze podam link do formularza...
http://symulator.loc...eu/radness.html

To tak podam kod jak wyglada urywek tych panstw:
<a href="#" id="countryClicker" onclick='showCountries(); return false;'><span class='si'>United States of America</span></a> <a href="#" onclick='selectCountry("PL", this); return false;'><span class='si'>Poland</span></a>

Chyba ze trzeba policzyc ktora polska jest na liscie ale to głupie chyba.
A dodanie na końcu nie pomoglo... Gdy jest _firstName_ nie wpisuje danych...
A jak dalem z tym napisem defaul to okienka wyskakiwaly z literami i czasami np. _firstName itd.

Ech. Zamień /[^a-z0-9]+/i na /[^a-z0-9]+/ig


Ech. Zamień /[^a-z0-9]+/i na /[^a-z0-9]+/ig
Dziala juz ale ten wybor panstwa niewiem jak zrobic ;/
Jeden pan powiedzial mi tak:

Musisz utworzyć listę rozwijalną i odpowiednią pozycję ustawić jako pozycję selected
Jak to zrobic? Jakas wskazówka? Albo cos?
Użytkownik Kicha edytował ten post 06 maj 2010, 19:11
Prześledź co robi funkcja, która jest wykonywana po wybraniu opcji z pola wyboru i będziesz wiedział jak zareagować. To podstawy JS, więc musisz sobie poradzić, skoro uczysz się tego języka.

Nie kapuje za bardzo, mam patrzec co sie dzieje dopiero po wybraniu?
Pierw myslalem sobie ze trzeba tak skrypt: pierw napisac o polu country potem aby kliknelo na to pole i dopiero potem wybralo.
hmm...
Mam patrzec jakie akcje sa wykonywane po wyborze opcji.?

Nie mam pojecia co mam robic ;/
Użytkownik Kicha edytował ten post 08 maj 2010, 15:44
var country = "Poland"; $('#country').val(country); $('#countryClicker:first').html(country); $("#countryDetails").val(country);
Dziala wybieraj kraj.
Teraz problem wyglada nastepujaco: wchodze na strone z formularzem i pojawiaja sie uzupelnione pola lecz. Tam jest wybor kraju, gdy z listy wybierze sie polske to zamiast wyboru stanu amerykanskiego pojawia sie pole do wpisania PL tez stan tylko ze pole wyboru zamienia sie na zwykle pole. Oraz numer telefonu z 3 pól zamienia się w jedno pole. Czemu tak sie nie dzieje? I gdy uzywam tego kodu jakies dziwne bledy, nie moge potem zmienic kraju na inny.
Użytkownik Kicha edytował ten post 10 maj 2010, 17:38
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.