-
Fórumok
LOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
-
Frissítve: 2014-02-25 10:20 Téma összefoglaló
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
petyus_
senior tag
-
petyus_
senior tag
Ezt általában a pénzügyekért felelős vezetők döntik el, nem a fejlesztők.
Ők rövid távon profitnövekedést akarnak elkönyvelni.
Nem számít, hogy a fejlesztés ezáltal lelassul, felvesznek még ember.
Aztán amikor néhány év múlva abszolút tarthatatlan a helyzet, akkor felvesznek egy egész új csapat fejlesztőt, hogy oltsa a tüzet, és tegyen meg bármit az ellen, hogy összeomoljon az egész.Ilyenkor van a kolléga által említett 25 év lemaradás lefaragása 15 re.
Ugyanakkor azt sem szabad elfelejteni, hogy ilyen nagy cégek inkább választják a többéves, de kiforrott, stabil, megfelelően supportált technológiát a néhány éves legújabb trenddel szemben.
Tisztában vagyok vele, jelenleg is egy webforms alkalmazáson dolgozom, ráadásul a legkisebb probléma vele, hogy webforms
. Banki project, múltkor nekem kellett deployolnom, ami abból állt, hogy a gépemre publisholt projectet átmásoltam a megadott mappába (egyelőre csak QA-ra, de productionbe is így megy
). Ugyanennél a cégnél közben írunk egy web api-t is, de hiába indul 0-ról, azt sem engedték core-ban írni, mert hogy nem lehet csakúgy telepíteni a core-t a szerverekre (ami elég béna kifogás, mert self-contained-ként simán mehetne oda). -
petyus_
senior tag
Ezek a nagy cégek sokszor azért vannak lemaradásban, mert a webes rendszereiket integrálniuk kell egy őskövület háttér rendszerrel, és kompromisszumokat kell kötni a modernitás vs elérhető kliens libraryk között.
Nem írharja GraphQLben, Typescript backenddel a webes rendszert mert a háttérben lehet, hogy valami olyan nonstandard apihoz kellene csatlakoznia amihez csak a 15 éve elavult .net library képes csak megfelelően.
A háttérrendszert újraírni pedig nem érdemes, mert tökéletesen működik, és sok millió lenne újraírni.
Az pedig, hogy mit állítanak, hogy mire büszkék az csak marketing ami nagyon távol áll az ITtól.
Még ebben az esetben is jobb lenne, ha húznának egy réteget a legacy rendszerre, és legalább afölött lehetne modern technológiákkal dolgozni. Mert így a valamikor esedékes újraírás még drágább lesz.
-
petyus_
senior tag
Sziasztok,
Mint írtam nemrég, most ismerkedem a JS-el. Egy tutorialban látható kis játékot szerettem volna továbbvinni, de elakadtam. Eredetileg három kör, kattra eltűnik. Most van 6 kör, pirosra és sárgára kattintva azok eltűnnek, a kékre alertet dob böngésző. Kis segítséggel összeraktam eddig, viszont most megy az alert része. A kód így nézne ki:
let redAndYellowElements = document.getElementsByClassName("red-and-yellow");for (let i = 0; i < redAndYellowElements.length; i++) {redAndYellowElements[i].onclick = () => {
redAndYellowElements[i].style.display = "none";}}let blueElements = document.getElementsByClassName("blue");for (let i = 0; i < blueElements.length; i++) {blueElements.onclick = () => {alert("Nono!");}}blueElements-ről lemaradt az [i] .
13 másodpercen belül hárman
-
petyus_
senior tag
Van egy szokásos szövegbe ágyázott
<span style="display:block" > abcd </span>tagom, amin a nono/block váltogatom . De csúnyán új sorba ugrik . Ezt egy kulcsszóval meg lehet szüntetni, használtam is nagyon régen valamikor, de az istennek sem tudom újra megtalálni, és sajnos azt sem tudom már, hogy melyik kulcsszóra keressek rá érte .
Melyik kulcsszóval lehet megszüntetni ezt az ugrást ?ne 'block' legyen, hanem 'inline-block'
-
petyus_
senior tag
Szerintetek Angularba "komoly" appban mennyire állja meg a helyét az olyan megoldás, hogy egymásba ágyazom a regisztrációt és a beléptetést is
Ugye, úgy néz ki a dolog, hogy van egy dialog componemsem, abban pedig selectorral illesztem be a regisztráció vagy a bejelentkezés form komponensét
És most vettem észre, hogy visszafele nem tudok kommunikálni, tehát ha regisztrál a user, akkor se nem tudom átváltani a felületet login-re, és se nem tudok visszafele adni adatot
Így 1.0 verzióban azt csináltam, hogy egymásba ágyaztam a regisztrációnál a 2 service hívást, sikeres regisztráció után meghívja a beléptetést, de ez így elég hoki megoldásnak tűnik, pláne, hogy hibát se tudok kezelni, bár elvileg nem is lehetne, mert a regisztrációs adatokat használja beléptetésnél ism de akkor is
2.0 refatorba arra gondoltam, hogy akkor 1 dialog lenne és benne 2 divvel belerakva mindkét form, nyilván *ngIf-el elválasztva, és így talán normálisabban lehetne megoldani, de még ez se tűnik annyira jónak
Bocs a sok apró kérdésért, de végre egy viszonylag "normálisabb" dolgot akarok összerakni, és tapasztalat híján nem tudom mik a best practice-k
(#7766) petyus_ : Na akkor ezt majd megnézem egy kis refactorral
köszönöm Ha az a cél, hogy a regisztrált felhasználó egyből be is legyen léptetve, akkor az API-d register action-je akár vissza is küldheti egyből a tokent (nem tudom, hogy oldod meg a logint, gondolom jwt-vel, azt visszaadhatja a register method is), de ez csak egy tipp így hirtelen, működni működik, de nem tudom hogy szokták ezt megoldani.
-
petyus_
senior tag
Ezeket a mat-error alapból figyeli, required-öt is pl csak akkor írja ki, ha rámész az input mezőre, és kijössz belőle, tehát ha rákattintasz, de még nem írtál bele, akkor ki sem írja, csak ha úgy hagyod el, hogy üresen hagytad, vagy írtál bele, de visszatörölted.
"Errors are hidden initially and will be displayed on invalid form fields after the user has interacted with the element" - ezért, ha csak egy error-message van a fieldhez, akkor nem is kell neked foglalkozni az ngIf-ekkel, csak ha több van, és akkor is elég, ha csak az adott error-t teszed az ngIf-be
-
petyus_
senior tag
Az igazából ennyi:
export function containDigit(control: AbstractControl): { [key: string]: boolean } | null {
if(control.errors?.required || control.errors?.minlength || control.errors?.maxlength){return null; }
if (!/[A-Z]/.test(control.value) && environment.passwordContainDigit) {return {'containUpperCase': true }}
return null;}Akkor ír ki 2 hibaüzenetet amikor belekattintottam a mezőbe, de nem írtam semmit, nyilván olyankor required-re is lő, meg erre is, ezért próbálkoztam az első if-ben, megnézni, hogyha van már a required-re hiba, akkor ne is nézze ezt
Kipróbáltam most a te validátorodat, és nekem jól működik.
Így néz ki a html:
<mat-form-field class="w-100"><mat-label>Name</mat-label><input type="text" id="name" formControlName="name" matInput placeholder="Enter category name" /><mat-error *ngIf="name.hasError('required')">Name is required.</mat-error><mat-error *ngIf="name.hasError('minlength')">Name must be at least 3 characters.</mat-error><mat-error *ngIf="name.hasError('containUpperCase')">Must conatin uppercase</mat-error></mat-form-field>És a ts-ben annyit csináltam, hogy beleraktam a te functionödet, meg hozzáadtam a formcontrolhoz:
name: new FormControl('', [Validators.required, Validators.minLength(3), this.containUpperCase]),Így üresen, és 3 karakter alatt csak a minlength hibát írja, containUpperCase-t meg utána (átneveztem containDigit-ről
).A name az egy sima getter, vissza adja a 'this.form.control.name'-et, így átláthatódd a html.
-
petyus_
senior tag
Igazából [ennyi]
egyenlőre még hunglish
de majd többnyelvűsítés a cél, igazából a gyári validatoroknál le van valahogy kezelve ez szerintem, mert pl egy üres mezőre nem írja ki, hogy kötelező, és email formátumnak meg kell felelnieDe akkor majd utánanézek, hogy lehet ezt normálisan kezelni
Nemrég kezdtem el használni a materialt, tehát nem 100%, hogy én tudom jól, de "mat-error"-ból lehet több, abba kell belerakni az error-message-eket (szerkesztettem az előzőt, raktam be egy saját kódot).
Viszont itt most a ts file kéne, ahol megírtad a custom validatort.
Egyébként pl a minlength így van megírva:static minLength(minLength: number): ValidatorFn {
return (control: AbstractControl): ValidationErrors | null => {
if (isEmptyInputValue(control.value)) {
return null; // don't validate empty values to allow optional controls
}
const length: number = control.value ? control.value.length : 0;
return length < minLength ?
{'minlength': {'requiredLength': minLength, 'actualLength': length}} :
null;
};
}isEmpty ennyit csinál:
return value == null || value.length === 0; -
petyus_
senior tag
Bekérdezek ide, hátha valaki találkozott hasonlóval
Angular 9
Reactive formot használok, meg materialt
Használok egy pár beépített validátort, meg egy sajátot a jelszóra
A gond ott van, hogy minden hibát egyszer ír ki, tehát először csak a required-re lő, aztán ha van benne valami, akkor kiírja, hogy rövid a jelszó stb, de ha használom a saját validátoromat , ami azt nézi, hogy van e benne nagybetű, akkor kiírja a hibát akkor is, amikor üres a beviteli mező, és akkor 2 hibát ír ki a required-re, meg a saját validációmra
Ezt nem tudom, hogyan kellene megoldani, azt próbáltam már, hogy a custom validatorba megvizsgálom, hogy van e benne hiba, és a hibák között nincs az, amire éppen létrahoztam a custom validatort, de ígyis ugyan ezt csinálta
Legrosszabb esetben használok pattern-t, de azért szebb lenne emígy megoldani
Ha mutatsz kódot, kicsit könnyebb lenne. Írtad, hogy Materialt használsz, ott ha több hibaüzenet is van, akkor neked kell kezelned, hogy melyik mikor jelenjen meg, alapból csak annyit néz, hogy dirty || touched, és ha van hiba, akkor megjeleníti (ha több hiba van, akkor mindet). Neked megírnod mindegyik hibára, hogy melyik mikor jelenjen meg.
Illetve, ha már dirty || touched, és ezért mutatja a required hibát, akkor egyértelmű, hogy mutatja a "nincs e betű" hibát, mert ha üres, akkor nincs e betű
.Nekem pl van egy ilyenem:
<mat-form-field>
<mat-label>Name</mat-label>
<input type="text" id="name" formControlName="name" matInput />
<mat-error *ngIf="accountName.hasError('required')">Account name is required</mat-error>
<mat-error *ngIf="accountName.hasError('minlength')">Account name must be at least 3 characters</mat-error>
</mat-form-field>Itt a required akkor jelenik meg, ha dirty || touched, a minlength-es pedig akkor, ha 1 vagy 2 karakter van beírva, de ez a gyári minlength, itt megvan írva ez a viselkedés.
-
petyus_
senior tag
-
petyus_
senior tag
Köszönöm szépen a választ. Működik.
Csak azt nem értem így miért nem.var price = document.getElementById("price_net_netto_IDE_102").textContent
price.innerHTML= Number(price) + 1Mert a .textContent() egy stringet ad vissza, és ezen akarod beállítani az innerHTML-t.
-
petyus_
senior tag
Köszönöm a megoldást. Így már működik, amit szeretnék.
Egyetlen gond van vele, hogy az első klikknél nem csinál semmit, csak a második kattintás után kezdi törölni a div tartalmát.Valószínűleg van a végén whitespace, és azt vágja le először, hívja rajta egy trim()-et.
(viszont akkor a spacek alapból mindig törölve lesznek, nem tudom ez gond-e).
-
petyus_
senior tag
$(document).ready(function(){
$("button").click(function(){
const div = $('#myDiv');
div.text(div.text().substring(0,div.text().length-1))
});
}); -
petyus_
senior tag
Értem, de te az eltüntetést akarod gyakorolni, , az hogy iframe, vagy nem, tök mindegy, de sokkal egyszerűbb lenne ezeket csinálni, ha látnád rendesen a HTML-t. Majd amikor élesben csinálod, akkor elé rakod, hogy az iframe-ből válassz ki valamit.
Amúgy most látom, az előző azért nem megy, mert '.fa'-t írtál, nem kell elé a pont, az akkor kell, ha a querySelectorAll-t használod.
-
petyus_
senior tag
Igen ez valóban működik és értem is a lényegét, de ennek nem. Az második .fa osztály akarom eltüntetni, ami a második .fa osztály és nem engedi azt.
<!DOCTYPE html>
<html>
<body>
<iframe id="myFrame" src="/default.asp" style="height:380px;width:100%"></iframe>
<p>Click the "Tryit" button to hide the first H1 element in the iframe (another document).</p>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction() {
var iframe = document.getElementById("myFrame");
var elmnt = iframe.contentWindow.document.getElementsByClassName(".fa")[0];
elmnt.style.display = "none";
}
</script>
</body>
</html>Arra az elemre gondolsz, ami a "fa" osztályú elemek közül a második? Ha igen, akkor azért nem megy, mert az elsőt választod ki. A getElementsByTagName("fa") egy tömböt ad vissza, te odaírtad a végére, hogy [0], így az első elemet választod ki (ugyanúgy, mint ahogy korábban az első képet választottad ki). Ha a másodikat szeretnéd, akkor [1]-t írj a végére.)
Egyébként miért jó ezeket iframe-en gyakorolni? azonkívül, hogy ott van előtte, hogy iframe.contentWindow, pontosan ugyanúgy megy, mintha a sima HTML-t változtatnád, csak akkor jobban látnád a HTML szerkezetet.
-
petyus_
senior tag
Értem amit írsz, meg is néztem a példát, és azt mondom, hogy működik, amit csinálsz, de a kép, amit eltüntetsz, az ez:
<img src="https://www.google.com/images/cleardot.gif" class="goog-te-gadget-icon" alt="" style="background-image: url("https://translate.googleapis.com/translate_static/img/te_ctrl3.gif"); background-position: -65px 0px;">Ha megnyitod az src-jét, láthatod, hogy ez nem egy olyan kép, amit látsz az oldalon, ezért nem is látod, hogy eltűnik.
Nézd meg mondjuk erre:
var elmnt = iframe.contentWindow.document.getElementsByTagName("img")[4];Ez a "Web Templates" alatti kép, ha ezen csinálod, akkor láthatod, hogy működik.
-
petyus_
senior tag
-
petyus_
senior tag
szia
kiszedtem őket, köszi a tanácsot. : ) még csak annyi volna a kérdésem, hogy mindezekkel hogyan kellene az info div-et megcéloznom. ez a script arra nem mutat rá, ha jól láttam. az volna a célom, hogy ha a doboz tartalma változik, akkor az info színe változzon és akár mindez többször ismétlődve egyetlen oldalon.
Ja, értem. Akkor viszont, ahogy Jim-Y is írta, kellene a html szerkezete is. Valamennyire biztos kapcsolódik a 'doboz'-hoz az 'info' (tehát pl van egy div, és azon belül van a doboz és info div), úgyhogy azt is meg lehet csinálni, csak ehhez kell a html.
-
petyus_
senior tag
Akkor ugyanez, csak nem kell a ".parent()".
Illetve most nézem, hogy a .css() részt csak copy-paste-eltem, mindkettőnél ugyanaz van, ha esetleg innen másolod
. -
petyus_
senior tag
sziasztok
adva van az alábbi html kód, ami háromszor ismétlődik
<div class="info">
<div class="doboz">[tartalom]</div>
</div>a doboz tartalmát egy sql select tölti fel. amikor a felhasználó rányom a küldés gombra, a lekérdezés lefut és beleírja a tartalmát a dobozba. a doboz tartalma jquery slider-el nyílik le, bár ez most talán nem fontos. írtam hozzá egy rövid js sort, ami a következőt csinálja: megnézni van-e bármi tartalom a doboz div-en belül, ha pedig van, az info doboz tartalmát szürkéről zöldre festi, illetve ad hozzá szöveget is.
ez a js kódom:
jQuery(document).ready(function($) {
if ($('.doboz').html()) {
$('.info').css({'background-color': '#addfad', 'color': 'black'}).text('kész');
} else {
$('.info').css({'background-color': 'gray', 'color': 'white'}).text('nincs kész');
}
});ezt biztosan lehetne szebben is, de egyelőre működik, már ennek örülök. viszont az egyszerűsége a kódnak a veszte is. felhasználó egy oldalon belül három sql-t kérhet le a szervertől, három blokkban. ha az első lefut, teljes joggal minden doboz zöld lesz, hiszen a doboz class háromszor van jelen, mindhármat vizsgálja. valamilyen formában egyedi azonosítót kellene adnom, arra viszont egyelőre nem jöttem rá, hogyan kellene belefűznöm a js-be
jQuery(document).ready(function($) {
var doboz = $('.doboz');
doboz.each(function(){
if($(this).html()){
$(this).parent().css({'background-color': '#addfad', 'color': 'black'}).text('kész');
}
else{
$(this).parent().css({'background-color': '#addfad', 'color': 'black'}).text('kész');
}
});Rég nem jquery-ztem, lehet, hogy van szebb megoldás, de ez működik
Új hozzászólás Aktív témák
-
Fórumok
LOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Fejhallgató erősítő és DAC topik
- A Linux megnégyszerezte magát a Steamen — a Microsoft ismét ígérget
- BestBuy topik
- Nintendo Switch 2
- Arc Raiders
- AMD vs. INTEL vs. NVIDIA
- Samsung kuponkunyeráló
- Először kombinálja a Full HD-t az 1000 Hz-cel egy monitor
- AMD Navi Radeon™ RX 9xxx sorozat
- Samsung Galaxy S26 Ultra - fontossági sorrend
- További aktív témák...
- 24 magos AMD Threadripper alapú munkára kiváló félgép, 128GB RAM-mal
- HP ZBook Fury 15 G7 i7-10850H 32GB 512GB SSD Quadro T2000 4GB FHD HUN bill, szép állapotban eladó
- Eladó MacBook Pro 16,1 2019 CTO
- új 0 km es garanciás lenovo loq rtx 5050 8gb
- Eladó teljesen újszerű karcmentes Samsung Galaxy Watch Ultra
- Vásárlunk iPhone 12/12 Mini/12 Pro/12 Pro Max
- G.SKILL TRIDENT Z RGB 16GB (2x8GB) DDR4 3200MHz F4-3200C16D-16GTZR
- Apple iPhone 11 Pro / 64GB / Kártyafüggetlen / 12Hó garancia / Akku:100%
- Dobozos! Xbox One X 1 TB + kontroller 6 hó garancia, számlával!
- Új monitor állvány- elegáns megoldás a dupla A/4-es papírcsomag helyett - csak össze lett szerelve
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
. Banki project, múltkor nekem kellett deployolnom, ami abból állt, hogy a gépemre publisholt projectet átmásoltam a megadott mappába (egyelőre csak QA-ra, de productionbe is így megy
). Ugyanennél a cégnél közben írunk egy web api-t is, de hiába indul 0-ról, azt sem engedték core-ban írni, mert hogy nem lehet csakúgy telepíteni a core-t a szerverekre (ami elég béna kifogás, mert self-contained-ként simán mehetne oda).

).

