Új hozzászólás Aktív témák
-
jeges
senior tag
nem igazán. a .html() nagyjából a js (dom) innerHTML tulajdonság értékét (azaz szövegesen az elem tartalmát, akármi is az) adja vissza. ellentétben a .val()-lal, ami nagyjából a js (ill dom elem) .value-t adja vissza.
inputoknak általában value-ja van (kivéve textarea pl.), div-nek, li-nek, és hasonlóknak inkább innerHTML.
a pontos használat jquery dokumentációban fellelhető (google-ban jquery + html/val) -
Speeedfire
nagyúr
Segítséget szeretnék kérni pár form ellenőrzésére. Ilyesmikre gondolok, hogy egy adott kifejezés hányszor van az input mezőben, vagy az adott inputmezőben van-e egy adott kifejezés, amit mondjuk egy tömbből olvas be. Mindezt ha rákattintok egy submit gomba és jelez nekem, hogy gond van. Írna valaki 1-2 példát? Esetleg linket ha kezdő kérdés?
[ Szerkesztve ]
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
Speeedfire
nagyúr
Közben kutattam...
$('#user-login-form').submit(function() {
// hibaellenőrzés, ha üres a felhasználó vagy jelszó mező, nem küldi el
var hiba = '';
if ($("#edit-name").val() == "") {
hiba += 'Üresen hagytad a "felhasználó" mezőt!\n';
}
if ($("#edit-pass").val() == "") {
hiba += 'Üresen hagytad a "jelszó" mezőt!\n';
}
// ha van hiba, figyelmeztetés, nem küldjük el
if(hiba != ''){
alert(hiba);
return false;
}
return true;
});Már csak az lenne az érdekes, hogy tömbből keres ki dolgokat és hasonlítja össze az input mezővel és ha tartalmazza akkor error.
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
jeges
senior tag
válasz Speeedfire #105 üzenetére
ez a téma szép, de ennyire nem egyszerű.
milyen típusú ellenőrzésekre gondolsz? mennyire hagysz szabad kezet a felhasználónak, hogy beállíthassa saját ellenőrzéseit?
a legegyszerűbb ellenőrzés pl a kitöltöttség, de ennél jóval bonyolultabbakat is el tudok képzelni:
- numerikus valóban numerikus-e (jellemzően regexp)
- numerikus nagyobb/kisebb egy megadott értéknél
- két numerikus input közül az egyik nagyobb a másiknál
- két dátum input közül az egyik nagyobb a másiknál
- szöveges input esetében valamilyen regexp ellenőrzés (pl név nem lehet rövidebb 3 karakternél, vagy legyen benne keresztnév és vezetéknév)szóval a megvalósítás nagyban függ attól, mi az elvárt működés, én személy szerint olyasmiben gondolkodnék, hogy a tárolt ellenőrzési szabályokat rekordonként egy tömbben vagy JSON objektumban tárolom, majd definiálok egy check vagy hasonló nevű osztályt/függvényt, és a megadott tömbön végiggyalogolva minden rekordra meghívom. ez a függvény aztán eldönti a megadott tömb alapján, hogy mit fog csinálni (regexp, numerikus összehasonlítás, dátumok összehasonlítása, stb)
-
Speeedfire
nagyúr
milyen típusú ellenőrzésekre gondolsz? mennyire hagysz szabad kezet a felhasználónak, hogy beállíthassa saját ellenőrzéseit?
Konkrétan egy linkkatalógusom van és oda akarok 1-2 dolgot.
pl
-a textarea-ba min. 300 karakter kell
-minden mező legyen kitöltve
-ha a textarea-ban van egy adott kifejezés akkor error (itt valami tömbben lenne felsorolva pár adat)Nagyjából ennyi lenne, illetve ezeket már tudnám kombinálni is. Nem akarom, hogy a felhasználó módosítsa, de gondolom elég lenne ide egy js kódolás, nem kellene rejteni. Bár nem hiszem, hogy sokan módosítanák a html-ben ezt.
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
veterán
válasz Speeedfire #107 üzenetére
ha a textarea-ban van egy adott kifejezés akkor error
Ez nagyon jól hangzik, viszont nagyon kicseszel magaddal, ha ezt megjátszod. Milyen kifejezéseket tennél például bele?
Én egy zárt rendszernél mondjuk tiltottam a tipikus SQL kifejezéseket (update, insert, stb.) a felhasználónévből, jelszóból, stb., viszont egy nyilvánosnál ezt nem tudod megjátszani, különben a userek morogni fognak.
Egyébként
public rendszernéla js-en túl php-ban is ugyanúgy ellenőrizni kell mindent.Bár nem hiszem, hogy sokan módosítanák a html-ben ezt.
Már vérpisti szinten is simán megjátszható, hát akkor egy komolyabb cracker...
[ Szerkesztve ]
-
martonx
veterán
sql injection ellen nem az update insert parancsokat kell tiltani, hanem a "--"-t és a ";"-t.
A js alapú XSS támadásokhoz meg (már ha később böngészőben megjeleníted valahol a user által beírt szöveget) a "/>"-t kell tiltani a szövegből.Egy tipikus SQL injection így néz ki ; select * from users --
A ; lezárja a spagetti kódot, a -- kommenteli az utána lévőket, és marad egy szépen végrehajtható sql-ed, amire jó eséllyel választ kapsz.Ha az SQL injection-t és az XSS-t kivédted, akkor már a vérpistikéket (és ez a többség) kivédted. Aki meg nagyon akarja, és elég profi az úgyis feltöri az oldalt.
Én kérek elnézést!
-
Speeedfire
nagyúr
Túlbonyolítod a dolgot.
Egy kész rendszerem van már, csak nem akarom feleslegesen elküldeni az adatokat a szervernek ha úgy is jó.
Nincs sql injection, nincs xss, ezeket php oldalon védem.Csak user oldalon is szeretném megoldani ezt a dolgot, hogy praktikusabb legyen....
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
jeges
senior tag
válasz Speeedfire #112 üzenetére
egy lehetséges megoldás:
html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
<title>teszt</title>
<style type="text/css">
#fm {width:500px;display:block;float:left;margin:0; padding:0;}
#fm label, #fm input {display:inline;float:left;position:relative;margin:0 0 5px 5px; padding:0;font:normal 12px Verdana;}
#fm label {width:200px; font-weight:700; text-align:right;}
#fm input {width:250px; text-align:left;}
#send {width:60px !important;font-weight:700 !important;text-align:center !important; margin-left:200px !important;}
#log {width:500px;height:100px;display:block;float:left;position:relative;}
</style>
<script src="rule.js" type="text/javascript"></script>
<script type="text/javascript">
myRule = {
first: {
sbj: "nm",
fnc: "nn",
prm: "",
msg: "A név kitöltése kötelező."
},
second: {
sbj: "yr",
fnc: "gt",
prm: 18,
msg: "Csak 18 év felett."
},
third: {
sbj: "yr",
fnc: "lt",
prm: 99,
msg: "Csak 99 év alatt."
},
fifth: {
sbj: "cn",
fnc: "rg",
prm: ["^hu","i"],
msg: "Csak magyar állampolgárok számára."
},
fourth: {
sbj: "cn",
fnc: "nn",
prm: "",
msg: "Az állampolgárság kitöltése kötelező."
}
}
window.onload = function(){
var sn = document.getElementById("send");
var fm = document.getElementById("fm");
var lg = document.getElementById("log");
sn.onclick = function(){
lg.innerHTML = "";
var fc = new formChecker(fm,myRule);
lg.innerHTML += "out: " + fc.out();
}
}
</script>
</head>
<body>
<form id="fm" name="fm" method="post">
<label for="nm">Name</label><input type="text" name="nm" id="nm" class="nm" value="name" />
<label for="yr">Age</label><input type="text" name="yr" id="yr" class="yr" value="age (years)" />
<label for="cn">Country</label><input type="text" name="cn" id="cn" class="cn" value="country (short, i.e. hu or en)" />
<input type="button" name="send" id="send" value="send" />
</form>
<br>
<div id="log"></log>
</body>
</html>js: (html-ben rule.js-ként hivatkozva)
function gotClass(obj,cl) {
var r = new RegExp("\\b" + cl + "\\b", "i");
var ob = ( typeof(obj) == "object" ) ? obj : $lm(obj);
if ( ob && ob.className && ob.className.match(r) !== null ) return true;
return false;
}
function firstChildofClass(p,cl) {
if (!p || !p.childNodes.length)return;
var ch = p.childNodes;
for ( var i = 0; i < ch.length; i++ ){
if (gotClass(ch[i],cl))return ch[i];
}
return;
}
function $fc(p, cl){
return firstChildofClass(p,cl);
}
function formChecker(fm,rule){
if (!fm) return;
this.fm = fm;
this.rule = rule;
this.res = [];
this.chk = function(){
var r;
for (var i in this.rule){
r = this.rule[i];
if ($fc(this.fm,r.sbj)){
var val = ruleCheck( $fc(this.fm,r.sbj) , r.fnc , r.prm );
if (!val) val = r.msg;
else val = "ok";
document.getElementById("log").innerHTML += "<br>val: " + val;
this.res.push(val);
}
}
}
// output
this.out = function(){
if (this.res.length < 1)this.chk();
var s = "";
for(var i = 0; i < this.res.length; i++ ){
if(this.res[i] != true)s += this.res[i] + "<br>";
}
return s;
}
}
function chk(obj){
this.v = (obj.value) ? obj.value : obj.innerHTML;
this.eq = function(b){
if (this.v == b)return true;
return false;
}
this.lt = function(b){
if (this.v < parseFloat(b))return true;
return false;
}
this.le = function(b){
if (this.v <= parseFloat(b))return true;
return false;
}
this.gt = function(b){
if (this.v > parseFloat(b))return true;
return false;
}
this.ge = function(b){
if (this.v >= parseFloat(b))return true;
return false;
}
this.nn = function(){
if (this.v.toString().length > 0)return true;
return false;
}
this.rg = function(b){
var bb = new RegExp(b[0],b[1]);
return bb.test(this.v);
}
this.exec = function(f, arg) {
var args;
return this[f](arg);
}
}
function ruleCheck(obj,f,prm){
if (!obj)return;
var c = new chk(obj);
return c.exec(f,prm);
}nem állítom, hogy tökéletes, de nagyjából működik
szabályokat json formában várja (ahogy a html-ben látszik)
az ellenőrző függvények persze bővíthetők, most csak néhányat írtam beleha kérdés merül fel, szólj
sry, jq-ban is lehetne, de nem akartam, mer' azér' a néhány getElementById-ért felesleges.
-
jeges
senior tag
javított, kiegészített kód: formChecker
-
veterán
válasz Speeedfire #112 üzenetére
Milyen dolgot bonyolítok túl, amikor te is ugyanazokat írtad le, amiket én? (szerver, és kliens oldalon is ellenőrzöl).
-
Speeedfire
nagyúr
Délután lesz egy kis időm és átnézem az egészet, de ennyiből már boldogulok szerintem!
Tapsi: Igen, csak én kliens oldalon már nem akarok a biztonsággal bajlódni. Ha át is írja a js kódot, akkor is véd a php engem.Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
jeges
senior tag
válasz Speeedfire #117 üzenetére
én szóltam, hogy nem annyira egyszerű
de legalább működik -
jeges
senior tag
válasz Speeedfire #117 üzenetére
kis segítség:
átírtam úgy, hogy az egyes ellenőrzések futtatása után az eredménytől függően végrehajtandó eljárásokat könnyebb legyen definiálni
(a példába egy egyszerű className-játékot és title-ban megjelenő hibaüzit tettem) -
Brown ügynök
senior tag
@jeges: Látom nagyon ráérsz.
Nemrég teszteltem IE-re és FF-re egy ajaxos funkciót és sajnos ezeken nem működik (Chrome-n igen).
jQuery vezriószám: 1.6.1
Ha az ügyfél választ a legördülő menüből akkor ez átadja a kiválasztott elemet és egy(-két) id-t (a következő megjelenő legördülő menü id-jét). Így néz ki kb.:
<div id="partner0">
<select onchange="changePartner1(this, partner20, partner30 );" >
</div>partner20 egy id, amivel a következő, megjelenő legördülő mező id-je lesz. Tehát még nem jelent meg de átadom a fv-nek hogy majd ha megjelenik, akkor ez legyen az id-je. A gond az, hogy a FF 5 erre hibát dob vissza: Nincs definiálva a partner20. Pedig az csak egy név, nem is kellene hogy bármit gondoljon róla az FF, majd a js-ben lekérem a hozzá tartozó értéket.
Miért csinálja ezt (velem) az FF 5?
"hacsak nem jön a jó tündér break utasítás képében..."
-
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!
-
Brown ügynök
senior tag
Akkor nem az FF a hibás? Megjegyzem a Chrome-ban működött és mintha FF4-ben is működött volna, erre nem emlékszem. Most FF5 van fent.
A függvény:
Span2, span3 értékek egy korábbi fv.-ből jönnek, melyben így adom meg őket:
var span2 = document.createElement('span');
span2.id = 'partner2'+ pct +'';
var span2id = span2.id;
var span3 = document.createElement('span');
span3.id = 'partner3'+ pct +'';
var span3id = span3.id;function changePartner1(partner1, span2, span3) {
var $selected = $(partner1).val();
var $url = $('input#searchAjaxPartner2').val();
var $span2 = $(span2).attr('id');
var $span3 = $(span3).attr('id');
$.post($url, {partner1: $selected, span2: $span2, span3: $span3},
function(data){
if(data.length > 0) {
$(span2).html(data);
}
});
}[ 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 #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.
-
jeges
senior tag
válasz Speeedfire #121 üzenetére
nem a színezés a lényeg, hanem hogy külön lehet definiálni, mit csináljon a cucc, ha sikeres a teszt vagy nem. az eljárások paraméterként megkapják a vizsgált elemet és a json-ban előre definiált (hiba)szöveget, ezzel azt csinálsz, amit akarsz. mindenesetre ha furcsállod a színezést, azér' nézd meg az elemek title-jét ellenőrzés után.
-
Brown ügynök
senior tag
Az előző válaszomban láthatod, hogy az egy változó érték: span2 helyén span2id, span3 = span3id értékét adom át.
Amikor új partnert szeretnék felvinni akkor létrejön 3 span: partner10, partner20, partner30. Ebben a 3 span-ben van 3 legördülő menücske . Amikor az első legördülőből választottam, végrehajtódik egy adatbázis lekérdezés és a visszatérő eredményt a partner20 span-en belül, egy legördülő menübe tölti.
Azért kell változó érték mert egyszerre több partnert is hozzáadhatnak és ekkor a span-k id-je változik: partner11, partner21, partner31,
partner12, partner22, partner32 stb.[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
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' );" > -
Brown ügynök
senior tag
Ez már tetszene az FF-nek, de a változó nevem mindig más lenne, nem úgy mint eddig:
function changePartner1(partner1, span2, span3) {
var $selected = $(partner1).val();
var $url = $('input#searchAjaxPartner2').val();
var $span2 = $(span2).attr('id');
var $span3 = $(span3).attr('id');
$.post($url, {partner1: $selected, span2: $span2, span3: $span3},
function(data){
if(data.length > 0) {
$(span2).html(data);
}
});
}A span2, span3 be lehet állítani változó nevűre... de az sem jó.
Pontosítok: Ekkor nem adódik át a span2-be span3 -ba a partner20, partner30
[ 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 #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.
-
Brown ügynök
senior tag
No jól van, de egyszerre több onclick-em is lehet. Itt azzal van a baj, hogy azt hiszi az FF hogy ami az onclicken beül van (changePartner1(this, span2, span3) azok fv., pedig csak változó(nevek). IE, meg Crome pedig tudja
"hacsak nem jön a jó tündér break utasítás képében..."
-
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 ]
-
Brown ügynök
senior tag
Úgy oldottam meg, hogy a 3 menüt befoglaló div id-jét adom tovább és abból képzem le a partner id-ket.
<div id="0">
<span id="partner10">
<span id="partner20">
<span id="partner30">
function changePartner1(partner1, id) {
var $selected = $(partner1).val();
var $id = id;
var $url = $('input#searchAjaxPartner2').val();
var $span2 = 'partner2'+ $id +'';
var $span3 = 'partner3'+ $id +'';
$.post($url, {partner1: $selected, span2: $span2, span3: $span3},
function(data){
if(data.length > 0) {
$(span2).html(data);
}
});
}Most már csak azt kell megoldanom, hogy meg is jelenjen. A $(span2).html(data);- val lesz a gond
"hacsak nem jön a jó tündér break utasítás képében..."
-
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) -
Brown ügynök
senior tag
válasz Peter Kiss #137 üzenetére
Igen, már megoldottam. A végleges fv. így néz ki:
function changePartner1(partner1, id) {
var $selected = $(partner1).val();
var $url = $('input#searchAjaxPartner2').val();
var $span2 = 'partner2'+ id +'';
$.post($url, {partner1: $selected, id: id},
function(data){
if(data.length > 0) {
$('span#'+ $span2 +'').html(data);
}
});
}"hacsak nem jön a jó tündér break utasítás képében..."
-
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.
-
Brown ügynök
senior tag
válasz Peter Kiss #139 üzenetére
Valóban. 1 kb-al csökkent a kód.
"hacsak nem jön a jó tündér break utasítás képében..."
-
veterán
válasz Brown ügynök #140 üzenetére
Több ezer sornyi kódnál már nem mind1!
-
martonx
veterán
ezt is érdemes használni, ha már a kódodat optimalizálod:
Én kérek elnézést!
-
Speeedfire
nagyúr
Van egy input mező melynek a keretét megakarom változtatni, de nem akarja az igazságot.
$('#hirnev').attr('border', '1px solid red');
Az lenne a lényege, hogy a hirnev id-vel rendelkező mezőnek a keretét átállítja pirosra, de nem akarja.
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
jeges
senior tag
válasz Speeedfire #143 üzenetére
$('#hirnev').css('border', '1px solid red');
upsz, lehet, ez nem megy.
helyette:$('#hirnev').css('borderStyle', 'solid');
$('#hirnev').css('borderColor', 'red');
$('#hirnev').css('borderWidth', '1px');[ Szerkesztve ]
-
Speeedfire
nagyúr
Egy ilyet hogy lehet elegánsan megoldani, hogy ne inline js legyen?
<input class="tbox" type="text" name="search" value="Keresés az oldalon ..." title="Írd be a keresendő szót és nyomj ENTER-t !"
onfocus="if ( this.value == 'Keresés az oldalon ...' ) {
this.value = '';
this.style.color = '#B8B8B8';
this.style.borderColor = '#f90';
}"
onblur="if ( this.value == '') {
this.value = 'Keresés az oldalon ...';
this.style.color = '#B8B8B8';
this.style.borderColor = '#acacac';
}" />Ezzel próbálkoztam, de nem megy.
Ez egy másik projekthez lenne.$(document).ready(function()
{
$(".hirnev").onfocus(function ()
{
var t= $(this);
t.attr('value',t.attr('value').replace('név...',''));
});
$(".hirnev").onblur(function ()
{
var t= $(this);
t.val('value',t.attr('value').replace('','név...'));
});
});Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
Speeedfire
nagyúr
válasz Speeedfire #146 üzenetére
Megszültem.
$(document).ready(function()
{
$(".hirnev").focus(function ()
{
var t= $(this);
t.attr('value',t.attr('value').replace('név...',''));
t.css('color', '#000');
t.css('border-color', 'green');
});
$(".hirnev").blur(function ()
{
var t= $(this);
if (t.val == ''){
t.val('value',t.attr('value').replace('','név...'));
}
t.css('color', '#777');
t.css('border-color', '#EEE');
});
});1 hátránya van csak, hogy ezt minden input mezőnél el kell játszani.
[ Szerkesztve ]
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
jeges
senior tag
válasz Speeedfire #146 üzenetére
ha jól értem a kérdést, az esemény-kezelésre vagy kiváncsi. jq-ban több lehetőség is van. egy a sok közül:
$('.tbox').bind('focus',function(){
<code>
});
$('.tbox').bind('blur',function(){
<code>
});(csak arra kell vigyázni, hogy ezek a függvények módosítják a környezetet, azaz függvényen belül a 'this' már a $('.tbox')-ra fog mutatni)
-
jeges
senior tag
válasz Speeedfire #147 üzenetére
nem kell, erre találták ki az event delegation-t
például:
$(document).bind('mouseup',function(e){
// event object
if(!e)e=window.event;//event target
var t = e.eventTarget || e.srcElement;//code
// itt t már az az elem, amelyen a mouseup történt});
a lényeg az lenne, hogy a document is érzékeli az összes elemen történt eseményt, ezért csak egy listener-t regisztrálsz őrajta, ami a fenti módon képes megállapítani, melyik elemen történt az esemény. innen már nem kell minden input-hoz külön eljárást írni, csak egyet a közös szülőjükre.
[ Szerkesztve ]
-
Speeedfire
nagyúr
Így már tényleg jó a kód.
$(document).ready(function()
{
$(".hiremail").focus(function ()
{
var t= $(this);
t.attr('value',t.attr('value').replace('email cím...',''));
t.css('color', '#000');
t.css('border-color', 'green');
});
$(".hiremail").blur(function ()
{
var t= $(this);
if (t.val() == ''){
t.val('email cím...');
}
t.css('color', '#777');
t.css('border-color', '#EEE');
});
});Ezt az event delegation-t megnézem még. Igazából csak az értékek változnak, a színek már nem, illetve természetesen változik még a vizsgált elem.
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs