Új hozzászólás Aktív témák
-
Lacces
őstag
válasz Brown ügynök #45 üzenetére
Köszi!
-
jeges
senior tag
válasz Brown ügynök #69 üzenetére
option tag selected tulajdonságát állítsd be
(mondjuk arra nem árt figyelni, hogy a többi option-nek ne legyen selected tulajdonsága, ha nem választható ki több elem egyszerre)dom-ban ez valahogy így néz ki:
<select size=1>
<option name='opt1' id='opt' value='1'>1</option>
<option name='opt2' class='opt' value='2'>2</option>
<option name='opt3' class='opt' value='3'>3</option>
</select>és a kijelölés:
$('#opt').attr('selected','selected');a többre pedig:
if($('.opt').attr('selected'))$('.opt').removeAttr('selected'); -
jeges
senior tag
válasz Brown ügynök #71 üzenetére
ugyanígy, csak loop-olsz az option tageken
ill jq-ben .each() talán komfortosabb:var val = <keresett érték>;
$("option").each(function(){
if( $(this).val() == val )$(this).attr("selected", "selected");
else $(this).removeAttr("selected");
}); -
jeges
senior tag
válasz Brown ügynök #77 üzenetére
a select-nek lehet külön id-t vagy class-t adni, az meglehetősen egyértelmű szokott lenni
én így csinálnám:
$(".optionClass", ".selectClass")de css-szerűen is lehet:
$("option.optionClass")a [name=] kijelölőnek is működnie kellene, de egyáltalán nem vagyok meggyőződve róla, hogy a $(this) jól működik, mivel az if() önmagában nem módosítja a $(this) értékét. pont ezért jó az each(), mert a benne foglalt callback függvényben már lehet hivatkozni az aktuális elemre.
-
jeges
senior tag
válasz Brown ügynök #79 üzenetére
+ megjegyzés: ha összetett kijelölő nem megy, használhatsz pl. children()-t:
$(".selectClass").children(".optionClass").each(function(){ <code> });+ megjegyzés: ezt csak "vakon" mondom, de szerintem nincs nagy különbség a halmazzal visszatérő kijelölő és az each() között gyorsaságban, mivel így is úgy is végig kell mennie a programnak az összes opción.
-
jeges
senior tag
válasz Brown ügynök #79 üzenetére
hol írják ezt a korlátot? én nem találtam.
szerk: sőt, ez arra utal, hogy normál kijelölők simán használhatók ("When called it iterates over the DOM elements that are part of the jQuery object.")
közben kipróbáltam, simán megy bármilyen selectorral....
[ Szerkesztve ]
-
jeges
senior tag
válasz Brown ügynök #79 üzenetére
és még egy megjegyzés (mely azonban nem csorbítja a megoldások értékét):
if($('option[value="'+ tcs +'"]').val() == tcs )$('option[value="'+ tcs +'"]').attr("selected", "selected");
itt sztem nincs szükség az if-re, ezzel ugyanazt éred el:
$('option[value="'+ tcs +'"]').attr("selected", "selected");
if a többi option kijelölésének feloldásához kell(het), ahol a value nem tcs.
-
jeges
senior tag
válasz Brown ügynök #83 üzenetére
én az csinálnám, hogy a selectnek adnék classt vagy id-t
ha ez megyvan, akkor pedig$(".selectclassname").children("option").each()
$("#selectid").children("option").each() -
Lacces
őstag
válasz Brown ügynök #88 üzenetére
jeges és Brown ügynök köszönöm a segítséget!
Firebug nekem nem jelezte... igaz javascriptre sosem használtam, de nem láttam volna érte, hogy visítana.
Google Chrome, nekem még új volt. Aztán feltűnt egy kis piros x, meg aztán egy másik ablak is, nagyon jó! Tetszik nagyon!
Bár arra még nem jöttem rá, hogyan lehet a CSS-hez új tulajdonságot beszúrni mint a Firebugnál.
Most már ezt is megtanultam.Amúgy mint fejlesztő eszközt jQuery-hez mit ajánlotok? Én most egy sima notepad++-ot használtam, de az lazán átugrott a hibán :-D
Ha ősztől lesz állásom, akkor kaptok egy karton sört, vagy amit szeretnétek :-)
Másik kérdésem:
Bevásárló kosarat érdemes jQueryvel megvalósítani? Vagy inkább Ajax-xal szokás?
Nézegettem a google-n 2 órán keresztül. Egy Drag and Dropos bevásárló kártya tutorialt találtam, de azt néhány lehurogták, hogy hasztalan meg borzalmas a kód (bár én kezdőként semmi rosszat nem találtam benne). A másik meg nem működött!
És észre vettem, hogy sok bevásárló kártya ajax-xal van megírva.
Most elgondolkotam azon, hogy érdemes-e jQuery-ben ilyet csinálni? (mert elég keveset láttam google-n, meg ami volt is olyan, hogy is mondjam, nem felhasználó barát)Érdekel ez ügyben a véleményetek!
-
Lacces
őstag
válasz Brown ügynök #96 üzenetére
Köszönöm!
Tényleg, nem vettem figyelembe a class előtti " jelet amivel az id-t már alapból zárom... (és mindenképpen igyekeztem egyet még oda rakni). Köszi!
-
addikt
válasz Brown ügynök #99 üzenetére
$('#cikkszam'+ ct +'').html(cikkszam_val);
A val() input tagnél használatos.
-
martonx
veterán
válasz Brown ügynök #120 üzenetére
ennyiből nehéz megmondani.
Talán ha a changePartner1-et leírnád, mert a hiba nyilván abban lesz.Én kérek elnézést!
-
jeges
senior tag
válasz Brown ügynök #120 üzenetére
nem teljesen világos: partner20 lesz az új elem id-je vagy ő maga a div, ami megjelenik? előbbi esetben macskaköröm közé tenném, utóbbi esetben viszont inline kód helyett inkább head-ben definiálnám az onclick-et.
-
Brown ügynök
senior tag
válasz Brown ügynök #126 üzenetére
Tehát amikor megváltoztatom az első menű állapotát (changePartner1()) akkor már kész van a span2, span3-ba tölteni kívánt partner20, partner30 span (id).
[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
jeges
senior tag
válasz Brown ügynök #127 üzenetére
ezek szerint ezt már próbáltad?
<select onchange="changePartner1(this, 'partner20', 'partner30' );" > -
jeges
senior tag
válasz Brown ügynök #130 üzenetére
nos igen, itt sztem meggondolandó, hogy ne inline .onclick-et használj
-
jeges
senior tag
válasz Brown ügynök #132 üzenetére
egyébként oda is lehet, de ha jól értem, most erre nincs szükség, hiszen ajax hívással operálsz. úgy értem
<head><script type="text/javascript">obj.onclick = function(){}</script></head>
ehelyett:
<body><div onclick=""></div></body>előbbi esetben sokkal könnyebb követni a változókat szerintem, és könnyebb kihasználni az egymásba ágyazhatóság előnyeit is.
-
jeges
senior tag
válasz Brown ügynök #134 üzenetére
function foo(){
var s = 1;
bar = function(){ return s+1; }
s = bar();
return s;
}
ha meghívod foo()-t, az 2-t fog visszaadni, mert a bar() tudja, hogy s = 1, ehhez ad hozzá még egyet. ugyanezt megteheted az onchange, onclick eseményekkel is, mivel azok is csak függvények. csak arra kell vigyázni, hogy a this mást fog jelenteni, a "kívül" definiált változók belül is használhatók.
szerk: a fenti mintájára pl.
function valami(){
var span2 = document.createElement("div");
span2.id = "span2";
document.body.appendChild(span2);var lm = document.getElementById("elemem");
lm.onclick = function(){
document.body.removeChild(span2);
}}
lm.onclick tudni fogja, mit értesz span2 alatt, mivel azt "kívül" definiáltad már.
[ Szerkesztve ]
-
válasz Brown ügynök #136 üzenetére
<div id="0">-t nem kellene használni.
$(span2).html(data); nem működhet, mert ez van a span2-ben: 'partner2'+ $id
A helyes hívás: $('#' + span2).html(data) -
válasz Brown ügynök #138 üzenetére
Az 'input' és 'span' szavakat kiveheted a selector-okból, elég a #. Adott lapon azt az ID-t csak egy elem használhatja, nem kell feleslegesen túráztatni az értelmezőt.
-
addikt
válasz Brown ügynök #140 üzenetére
Több ezer sornyi kódnál már nem mind1!
-
jeges
senior tag
válasz Brown ügynök #155 üzenetére
-
válasz Brown ügynök #155 üzenetére
$('iframe').first().contents().find('body').append('<img src="' + elem + '"/>');
Így használom (majdnem) egy CKEditor-nál képbeszúrásra.
[ Szerkesztve ]
-
válasz Brown ügynök #169 üzenetére
Ha szerveroldalon tolsz ki header-ben kódolást, akkor azt módosítsd.
Ha a HTML <head> részében meg van adva a kódolás, módosítsd. (És máshol is, pl.: XML)
Az összes fájl (.htm, .html, .php, js, .css, miegymás) karakterkódolását állítsd át latin2-re UTF-8-ról (Notepad2, Notepad++).Ennyi lenne.
-
válasz Brown ügynök #171 üzenetére
Ehh, valóban.
Erre marad megoldásnak az, hogy szerveroldalon beveted az iconv()-ot, vagy urlencode-olsz kliensoldalon, szerveren meg dekódolsz. (Ezzel is van egy kicsi probléma, iconv() ajánlottabb.)Ettől függetlenül nem árthat megnézni a fentieket (önmagukban megoldást nem nyújtanak a problémádra sajnos), mert néha későn jön rá az ember, hogy valahol el van tolva a dolog.
Ami az ultimate megoldás lenne, az az adatbázis átborítása UTF-8-ba (meg minden másé). Nekem is azért nem volt szem előtt ez a jQuery "megjegyzés", mert weben már UTF-8 a menő, főleg a MySQL 5 óta (HUN collation).
-
jeges
senior tag
válasz Brown ügynök #169 üzenetére
milyen adatbázis? mennyire vannak a kezedben a beállítások?
(csak zárójelben: ez valami migrációs probléma?) -
martonx
veterán
-
válasz Brown ügynök #175 üzenetére
onblur-ra paraméter nélkül hívod meg a függvényt, miért is rakna be bármit is, ha mindkét paraméter undefinied?
Másik tipp:
$val = $(sablonnev).val();
if ( $val == ""){
$("#template").val();
}
else{
$("#template").val($val);
}Helyett:
$("#template").val($(sablonnev).val()); -
jeges
senior tag
válasz Brown ügynök #180 üzenetére
"hogyha mégsem választ ki egy sablonnevet, a begépelt szöveg ne tűnjön el a sablonnév inputból."
ha jól értem, a sablonnev inputot nem üríti a korábban írt kódrészleted, csak a template-et.
mindegy, sztem ez a három lehetőség van alapvetően:
1) ha a sablonnev változót vizsgálod:
if(sablonnev != undefined && sablonnev != "")$('#template').val(sablonnev);
2) ha a sablonnev id-jű inputot akarod vizsgálni:
if($('#sablonnev').val() != "")$('#template').val( $('#sablonnev').val() );
3) ha a sablonnev változóban tárolt id-jű inputot vizsgálod:
if($('#' + sablonnev).val() != "")$('#template').val( $('#' + sablonnev).val() );
-
Frigo
őstag
válasz Brown ügynök #288 üzenetére
Annak a függvénynek a végén amelyikben az új input elemet adod hozzá a oldalhoz hívd meg újra ugyanezt a függvényt.
Illetve az is megoldás lehet ha on()-al kötöd rá az eseménykezelődet .[ Szerkesztve ]
-
Sk8erPeter
nagyúr
válasz Brown ügynök #288 üzenetére
Nem muszáj minden alkalommal meghívni újra és újra ezt a függvényt, jó lehet a .live() függvény is - tulajdonképpen erre való (létező és jövőben létrehozott elemekre való eseménykötés).
Példa:
$('.my_input_class').live( 'keydown', function() {
// your task........
});Sk8erPeter
-
Frigo
őstag
válasz Brown ügynök #292 üzenetére
Az on() pont a live()-ot váltja le ami 1.7-től már deprecated lett meg amúgy se ajánlott a használata.
-
Brown ügynök
senior tag
válasz Brown ügynök #319 üzenetére
Ok, nézegetem a Json-t bár nem hiszem, hogy plain text hiba miatt nem működik.
"hacsak nem jön a jó tündér break utasítás képében..."
-
jeges
senior tag
válasz Brown ügynök #319 üzenetére
php-ban json_encode alakít json-ná egy tömböt, simán echo vagy print, amit elkapsz a kliensen.
[ Szerkesztve ]
-
Karma
félisten
válasz Brown ügynök #319 üzenetére
Nem válaszoltál, hogy milyen jQuery függvényt használsz az adat lehívására. A kapcsolódó kódod másold ide kérlek.
“All nothings are not equal.”
-
Karma
félisten
válasz Brown ügynök #319 üzenetére
Jó lenne még, ha breakpointtal vagy a console.log függvénnyel kiírnád a változóidat, seperc alatt kiderülne mi a hiba.
Szerintem egyébként az, hogy a data egy string, így nem tudsz id-re keresni benne.
“All nothings are not equal.”
-
Brown ügynök
senior tag
válasz Brown ügynök #325 üzenetére
így sem találja meg:
var str = '<article id="content">GOTCHA!</article>';
content = $( str ).find( '#content' );
$('#products').empty().append( content);Csak ha az str-t próbálom beágyazni akkor működik. Valószínűleg a find()-al van a baj.
Más: Ha Json-t tömböt használnék, akkor hogy hivatkozhatok a kulcsokra?
"hacsak nem jön a jó tündér break utasítás képében..."
-
jeges
senior tag
válasz Brown ügynök #326 üzenetére
js-ben:
var myjson = {
a: 1,
b: 2,
c: 3
}
var str = myjson.a;php-ban json_decode-dal tömbbe írod, és egyszerűen tömbként tudod használni.
-
jeges
senior tag
válasz Brown ügynök #328 üzenetére
-
Karma
félisten
válasz Brown ügynök #328 üzenetére
Ha a szervered az alábbi JSON stringet küldi le:
{
"pager": [ "Első", "Második", "Harmadik" ],
"etwas": [ "Foo", "Bar", "Baz"],
"answer": 42
}Akkor a data ezt az objektumot fogja tárolni, a tagjait meg pont úgy éred el, mint bármely más JS objektumnak, tehát pl. data.pager[0], vagy data.answer, vagy pl.
$.map(data.etwas, function() {
return $('<li>', { html: this });
}...---
Elvileg a post() "intelligent guess" alapján kitalálja, hogy egy JSON string jön le és beparsolja. De ha biztosra akarsz menni, a negyedik paraméterben megadhatod a dataType-ot. Bővebben.
Semmi szükség kézzel feldolgozni úgy, mint ahogy jeges írja előttem. Amúgy tisztább lehetőség a böngésző JSON parserét meghívni a JSON.parse() függvény formájában. JSON-ra konvertálni meg a JSON.stringify-jal lehet gyorsan és egyszerűen. De erre ismételten semmi szükség most.
[ Szerkesztve ]
“All nothings are not equal.”
-
Karma
félisten
válasz Brown ügynök #331 üzenetére
Jó lenne látni most már a tényleges inputot is. A kódod szerint egy tömb a JSON root eleme, amiben objektumok vannak, page és maxpage tulajdonsággal...?
Azaz ilyennek képzelem el:
[ { "page": 1, "maxPage": 3}, { "page": 2, "maxPage": 3}... ]Mellesleg a kódod nem nagyon fogja azt csinálni, amit szeretnél szerintem. (A tömb minden elemére csinálsz egy <ul>-t).
---
Amúgy azt a mapet az előbb azért írtam, hogy használd fel Szebb lesz végeredményben. Annak az eredményét (tömb) megadhatod egy append() hívásnak paraméterként, és így hozzácsaphatod az <ul>-edhez.
[ Szerkesztve ]
“All nothings are not equal.”
-
Karma
félisten
válasz Brown ügynök #333 üzenetére
Ez most a data, vagy a data[0]? Ezért lenne jobb a JSON stringet látni... Chrome-ban a Network fülön eléred a menet közben leAJAXolt tartalmakat is. Illetve a Console-ban be tudod kapcsolni az XMLHTTPRequestek loggolását (jobb katt a fehér területen), az is hasznos lehet.
[ Szerkesztve ]
“All nothings are not equal.”
-
jeges
senior tag
válasz Brown ügynök #335 üzenetére
ha jól értem, Karma arra próbált rámutatni, h a fetch_assoc() kimenete egy kétdimenziós (adattábla-szerű) tömb, s a kód alapján gyanús, h az eredeti cél az lett volna, h nem a teljes adattáblát, hanem csak az első (és gondolom egyetlen) sorát told össze a $nav tömbbel.
-
Brown ügynök
senior tag
válasz Brown ügynök #339 üzenetére
Igen, rosszul adtam meg az id-t.
$('#products').empty().append( product );
"hacsak nem jön a jó tündér break utasítás képében..."
-
jeges
senior tag
válasz Brown ügynök #339 üzenetére
for(var i = 0; i < data.length; i++){
var obj = jQuery.parseJSON(data);
product += '<section class="pbox"><article class="img"><img src="images/'+ obj.kep +'" alt="cipő" /></article>';
product += '<article class="info"><p>'+ obj.nev +'</p><p>'+ obj.marka +'</p>';
product += (obj.regi_ar > 0) ? '<p class="old">'+ obj.regi_ar +'</p><p class="new">'+ obj.uj_ar +'</p></article></section>' : '<p class="new">'+ obj.uj_ar +'</p></article></section>';
}data változó string vagy json? ha string, a length a szöveg karakteres hosszát fogja jelenteni. ha json, akkor pedig a json objektum tulajdonságainak számát. egyik esetben sincs sok értelme a for ciklusnak. ahogy most használod, akkor lenne értelmes, ha a data változó egy json stringeket tartalmazó tömb lenne (még akkor sem lenne jó, mert a második sor-ban nem data[i], hanem data szerepel), de ha jól látom, a response egy json string. ebben a környezetben a ciklusnak nincs értelme.
[ Szerkesztve ]
-
jeges
senior tag
válasz Brown ügynök #343 üzenetére
a 2. eset egyszerűbb (és tisztább is ha jól értelmezem):
var obj = {...};
for(var i in obj){
var kep = obj[i].kep;
} -
Karma
félisten
válasz Brown ügynök #343 üzenetére
Az első nem valid JSON. A másodikat annyiban módosítanám, hogy a termékeket nem közvetlenül a root objektumba tömném be, hanem tennék egy plusz attribútumot mondjuk "items" néven.
Jeges megoldása sajnos nem működne így, mert az objektum minden attribútumán végigmenne a ciklus, nem csak a számokon.
[ Szerkesztve ]
“All nothings are not equal.”
-
Sk8erPeter
nagyúr
válasz Brown ügynök #331 üzenetére
Hibák:
- adott azonosítójú HTML-elemből csak egy legyen! Nálad egy for ciklusban generálódik le annyiszor "pager" id-val rendelkező <ul> lista, amilyen hosszú a data. (értsd: for ciklusba raktad az <ul id='pager'> legyártását)
- az <ul> lista közepébe egyszer csak beszúrsz (hozzáfűzöl) a <li> elemek után egy <p> bekezdést is, aztán folytatod a <li>-kkel. Ez így nem valid.
<ul>-en belül csak <li>-k legyenek, azon belül lehet tartalom, tehát akkor már egy <li>-be rakd a <p>-t.(#335) Brown ügynök : ahogy Karma is elmondta, NEM szükséges a parseJSON megfelelő használat esetén (hmm, emlékeim szerint a dataType-ot sem feltétlenül szükséges minden esetben megadni, bár én meg szoktam, hogy könnyen követhető legyen a kód, jól látható legyen, milyen formában várom az adatokat).
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Brown ügynök #343 üzenetére
Igazából csak kiegészíteném a többieket.
Ami a második részben szerepel, nem könnyen bejárható, egyetértek, hogy bővítsd ki plusz egy egyértelmű taggal, ami jelzi, hogy itt mondjuk termékek következnek.Jó csúnyán leegyszerűsítve az, amit most generálsz, azt PHP-oldalon pl. így lehet előállítani (a lényeg szempontjából mindegy, PHP-oldalon mondjuk objektumokként kéred-e le vagy asszociatív tömb formájában; ezenkívül nyilván Te adatbázisból kéred le ezeket, tehát ebből a szempontból eltér a dolog, meg abból is, hogy ott egy normális ciklus formájában adod át az adatokat, de a lényeg érthető):
$products_page = array();
$products_page['page'] = 2;
$products_page['linkoffset'] = 0;
$products_page['maxpage'] = 3;
$products_page[] = array(
'kep' => 'airtokoul.jpg',
'nev' => 'Air Tokoul ',
'marka' => 'Nike',
'regi_ar' => '20000',
'uj_ar' => '18000',
);
$products_page[] = array(
'kep' => 'airtokoul.jpg',
'nev' => 'Air Tokoul ',
'marka' => 'Nike',
'regi_ar' => '20000',
'uj_ar' => '18000',
);
$json_return_value = json_encode($products_page);
echo $json_return_value;Ebből a generált JSON:
{"page":2,"linkoffset":0,"maxpage":3,"0":{"kep":"airtokoul.jpg","nev":"Air Tokoul ","marka":"Nike","regi_ar":"20000","uj_ar":"18000"},"1":{"kep":"airtokoul.jpg","nev":"Air Tokoul ","marka":"Nike","regi_ar":"20000","uj_ar":"18000"}}Na ehelyett a PHP-oldalról előállítható kódot ki kéne egészítened valahogy így (lásd a plusz 'products' indexet):
$products_page = array();
$products_page['page'] = 2;
$products_page['linkoffset'] = 0;
$products_page['maxpage'] = 3;
$products_page['products'][] = array(
'kep' => 'airtokoul.jpg',
'nev' => 'Air Tokoul ',
'marka' => 'Nike',
'regi_ar' => '20000',
'uj_ar' => '18000',
);
$products_page['products'][] = array(
'kep' => 'airtokoul.jpg',
'nev' => 'Air Tokoul ',
'marka' => 'Nike',
'regi_ar' => '20000',
'uj_ar' => '18000',
);
$json_return_value = json_encode($products_page);
echo $json_return_value;Na és ebből a generált JSON már így néz ki:
{"page":2,"linkoffset":0,"maxpage":3,"products":[{"kep":"airtokoul.jpg","nev":"Air Tokoul ","marka":"Nike","regi_ar":"20000","uj_ar":"18000"},{"kep":"airtokoul.jpg","nev":"Air Tokoul ","marka":"Nike","regi_ar":"20000","uj_ar":"18000"}]}Ez utóbbit pedig jQuery-vel - szerintem jól átlátható módon - így tudod bejárni:
$ul_obj = $('<ul>', {
id: 'products-list'
});
for(product_index in data.products){
$li_obj = $('<li>', {'class': 'products-list-element'});
$li_obj.html(
data.products[product_index].nev
);
$li_obj.appendTo($ul_obj);
}
$ul_obj.appendTo('#content-area');Hátha ez így segített valamit.
Kérdezz, ha valami nem tiszta.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Brown ügynök #350 üzenetére
Nincs mit!
Szerk.: "átírtam ezt a részt <b> tagekkel oldottam meg a lapozhatóságot"
Na de remélem akkor azt úgy, hogy <li> tagbe raktad. Tulajdonképpen nem csak az volt a gond, hogy <p> paragrafus van a <li>-elemek közé beékelve, hanem hogy bármi más HTML-elemet közbeékelsz ezek közé, máris nem valid úgy a kód.
Tehát a következő NEM jó:<ul>
<li>blabla1</li>
<div>blabla2 div-ben</div>
<li>blabla3</li>
</ul>így már JÓ:
<ul>
<li>blabla1</li>
<li><div>blabla2 div-ben</div></li>
<li>blabla3</li>
</ul>[ Szerkesztve ]
Sk8erPeter
Új hozzászólás Aktív témák
- Bomba ár! HP EliteBook 840 G5 - i5-8G I 8GB I 128GB SSD I 14" FHD I HDMI I Cam I W10 I Gari!
- The Last of Us Part I Ps5
- Bomba ár! HP EliteBook 830 G6 - i7-8G I 8GB I 256GB SSD I 13,3" FHD I HDMI I Cam I W11 I Gari!
- Bomba ár! Dell Latitude 5580 - i5-G6 I 8-16GB I 256 SSD I 15,6" FHD I HDMI I CAM I W10 I Garancia
- Bomba ár! Dell Latitude 5490 Touch - i5-8G I 8GB I 256SSD I 14" FHD Touch I Cam I W11 I Garancia!