![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 192 Pomógł: 12 Dołączył: 23.09.2010 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam,
jestem początkujący w posaniu kodu w jquery i od razu napotkałem na problem generowania błędów do tablicy: https://gist.github.com/anonymous/7481349 a mianowicie tablica errors cały czas jest pusta choć z warunku wynika że powinna zawierać 1 rekord proszę o pomoc |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ciezko sprawdzic czy na pewno w warunek ci wchodzi?
alert('widzisz mnie? ![]() errors[value] = 'proszę podać minimalną ilość znaków'; Jak zobaczysz alert, znaczy ze wszedl i to nie problem warunku tylko tablicy. Zas co do samej tablicy to do niej sie raczej wklada rzeczy przy po mocy PUSH. Zajrzyj do manuala js, bo to z samym jquery nie ma nic wspolnego -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 192 Pomógł: 12 Dołączył: 23.09.2010 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
push nie jest zły tylko że ja chce miec tak jakby "klucz i wartosc" z push'em to tylko wartość będe mieć....
Kod $.each(tablica, function(key, value){ if($('input[name='+value+']').val().length > 3){ // if to less lenght then error alert($('input[name='+value+']').val()); }else{ errors[value] = 'proszę podać minimalną ilość znaków'; } //inputName[value] = $('input[name='+value+']').val(); //przypisanie zmiennych formularza }); if(errors.length > 0){ alert('g'); } jak dam errors.lenght = 0 to alert się wyswietli lub manulanie dam Kod alert(errors['name2']); takze oznacza to ze warunek mi wchodzi ![]() Nie potrafie tego zrozumieć.. wyglada tak jakby tablica była pusta a jak manualnie sprawdze dane pole z tablicy to są tam dane ;/ Ten post edytował tomi1985 15.11.2013, 10:29:30 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 354 Pomógł: 100 Dołączył: 14.11.2013 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
Daj errors[key] lub errors.push('proszę podać minimalną ilość znaków'); Cytat push nie jest zły tylko że ja chce miec tak jakby "klucz i wartosc" z push'em to tylko wartość będe mieć.... Tak z tablicą w Js nie zrobisz, do tego służą elementy typu Object. var errors = {}; errors[value] = "twoj error text"; |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 192 Pomógł: 12 Dołączył: 23.09.2010 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
zadziałało
![]() czyli klucz => wartość to tylko na obiektach ? chcialem zrobic tak aby poźniej w html w <span id="statusX"></span> js wiedział w ktorym miejscu wyświetlić jaki błąd także potrzebowałem również klucza dla całośći |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 354 Pomógł: 100 Dołączył: 14.11.2013 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
Cytat zadziałało ![]() czyli klucz => wartość to tylko na obiektach ? Dokładnie. Jesli same wartosci, to mozna pakować do tablicy, a jak klucz => wartosc to obiekty ![]() |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 192 Pomógł: 12 Dołączył: 23.09.2010 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
hmmm zmieniłem
Kod var errors = []; na Kod var errors = {}; ale nadal nie wiem jak mogę z automatu przypisywać dwie zmienne ;/ Kod $.each(tablica, function(key, value){ if($('input[name='+value+']').val().length > 3){ // if to less lenght then error alert($('input[name='+value+']').val()); }else{ errors[value] = 'proszę podać minimalną ilość znaków'; } //inputName[value] = $('input[name='+value+']').val(); //przypisanie zmiennych formularza }); jak mam tak : Kod var myObject = { ' test': 123, 'some string': 456, 'bla bla bla': 789 }; ok fajnie działa ale są to wartości na sztywno przypisane a ja potrzevuje dynamicznie generowane |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 354 Pomógł: 100 Dołączył: 14.11.2013 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
Nie kumam. Nie widze tam żadnych dwóch zmiennych.
Dwie zmienne do obiektu: error[value1] = "text1"; error[value2] = "text2"; Dwie zmienne do 1 elementu: error[value1] = ["text1", "text2"]; lub jako obiekt: error[value] = {'value1':'text1', 'value2':'text2'}; |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 192 Pomógł: 12 Dołączył: 23.09.2010 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Kod var tablica = new Array ( 'name1', 'name2' ); tu masz jedna a druga to wartosc z inputa i np. będzie blad w polu "name2" to aby object mial {'name2' : 'wartosc bledu'} itd... Ten post edytował tomi1985 15.11.2013, 11:09:15 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 354 Pomógł: 100 Dołączył: 14.11.2013 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
Po wykonaniu takiego skryptu powinienes dostac: errors = {'name1':'proszę podać minimalną ilość znaków', 'name2':'proszę podać minimalną ilość znaków'} czyli wszystko powinno byc tak jak chcesz. PS. Nie używaj new Array ('name1', 'name2') lepiej ['name1', 'name2'] |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 192 Pomógł: 12 Dołączył: 23.09.2010 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Kod if(isEmpty(errors)){ $.each(errors, function(key, value){ alert(key+'-'+value); }); }; a tutaj co mam nie tak... sprawdzałem w manualu i tak się to przecież sprawdza lub: errors.isEmpty() ? przepraszam za tak banalne pytania... lecz "kto pyta nie błądzi" ![]() znalazłem Kod if(jQuery.isEmptyObject(errors)){ wkradł się troche inny problem teraz ![]() Kod $(document).ready(function() { var tablica = [ //name of input 'name1', 'name2' ]; var inputName = {}; var errors = {}; $('#formChange').submit(function() { $.each(tablica, function(key, value){ if($('input[name='+value+']').val().length > 3){ // if to more lenght then error inputName[value] = $('input[name='+value+']').val(); }else{ errors[value] = 'proszę podać minimalną ilość znaków'; } }); if(jQuery.isEmptyObject(errors)){ $('#loading').html('<img src="images/loading.gif">').show(); $('#resultChange').hide(); //go next step }else{ $.each(errors, function(key, value){ $('#'+key).css('border','1px solid red').show(); }); }; setTimeout(function() { $('#resultChange').show(); $('#loading').hide(); }, 1000); return false; // block load form action }); }); [/code [code] <div id="formChangeAds"> <span id="loading"></span> <div id="resultChange"> <form id="formChange" action="fds" method="post"> <table> <tr> <td><label>name1<input id="name1" type="text" name="name1" /></label></td> <td><label>name2<input type="text" name="name2" /></label><span id="name2"></span></td> </tr> <tr> <td><label>name3<input type="text" name="name3" /></label><span id="name3"></span></td> <td><label>name4<input type="text" name="name4" /></label><span id="name4"></span></td> </tr> <tr> <td><label>name5<input type="text" name="name5" /></label><span id="name5"></span></td> <td><label>name5<input type="text" name="name6" /></label><span id="name6"></span></td> </tr> </table> <input type="submit" value="Zapisz Zmiany" /> </form> </div> </div> i teraz tak: jak kliknę "zapisz zmiany" to funkcja działa tylko jednorazowo... tzn że jak po kliknieciu zmienie dane w inpucie i kliknę znów "zapisz zmiany" to już funkcja nie zadziała... potrzebne jest odświeżenie strony ;/ jak to obejść aby po każdym kliknieciu funkcja się uruchamiała ? Ten post edytował tomi1985 15.11.2013, 11:59:05 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 354 Pomógł: 100 Dołączył: 14.11.2013 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
Musisz wyczyscic obiekty, bo maja stare dane.
Daj jeszcze raz: var inputName = {}; var errors = {}; |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 16.07.2025 - 04:03 |