Hirdetés
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- eBay-es kütyük kis pénzért
- sh4d0w: Kalózkodás. Kalózkodás?
- bambano: Bambanő háza tája
- Hieronymus: Kalózkodás. Kalózkodás? hozzászólás
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Magga: PLEX: multimédia az egész lakásban
- droidic: Windows 11 önállóság nélküli világ: a kontroll új korszaka
Új hozzászólás Aktív témák
-
martonx
veterán
válasz
Speeedfire
#299
üzenetére
akkor pontosabban megfogalmaznád az igényeidet? Amúgy nem mindegy, hogy mennyire paraméterezhető egy gallery? Maximum a sok tucat paraméterből te csak kettőt használsz majd.
-
martonx
veterán
válasz
Speeedfire
#297
üzenetére
főoldalon a harmadik plugin, a Smart Gallery. Egyébként mint mondtam gugli a barátod, keress kedvedre.
-
martonx
veterán
válasz
Speeedfire
#295
üzenetére
Ilyenekkel van tele az internet. De mondjuk kezd itt:
-
Speeedfire
félisten
Hasonló galériát keresek, csak egyszerűbb beállításokkal. Ismer ilyet valaki?

-
Sk8erPeter
nagyúr
Igazad van, elfelejtettem, mert jelenleg épp egy 6-os Drupalon dolgozom, ahol 1.3.2 a maximális ajánlott verzió, ezért hirtelen kiment a fejemből, hogy azóta már felváltotta az on().
Az igaz, hogy deprecated, viszont hogy "meg amúgy se ajánlott a használata", az nem tudom, mire vonatkozik azonkívül, hogy nyilván érdemes az újabb változatot használni függvényekből is, és elfelejteni a deprecatedet. De tudsz valami káros mellékhatásról a jelenlegi újabb verziók esetén, ha a .live()-ot használja valaki?(#292) Brown ügynök: nincs mit, de igaza van Frigo-nak annyiban, hogy ha 1.7 verzió fölötti jQuery-t használsz, térj át az on()-ra, egy jelenlegi projekt miatt hirtelen megfeledkeztem erről.
-
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
Sk8erPeter
#291
üzenetére
Ez tényleg elegánsabb megoldás. Kösz.
@Figo: Most látom mire is gondoltál on alatt: $(document).on Ez egy friss eseménykezelő, 1.7-tól elérhető. Mindenesetre most már megjegyezve.

-
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........
}); -
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 . -
Brown ügynök
senior tag
Feladat: Egy input mezőben csak számok bevitelét kellene engedélyezni. A kódnak ez a része megvan:
$("#ertekInput1").keydown(function() {
if ( event.keyCode == 46 || event.keyCode == 8 ) {
}
else {
if (event.keyCode < 48 || event.keyCode > 57 ) {
event.preventDefault();
}
}
});Na most ezt egy olyan inputra kellene alkalmazni, ami az oldal betöltődésekor még nem is létezik. Magyarán ha a felhasználó az oldal betöltődése után létrehoz egy újabb mezőt (vagy többet) javascripttel, akkor erre a mezőre is érvényesüljön ez a függvény.
-
martonx
veterán
válasz
Sk8erPeter
#285
üzenetére
Most, hogy mondod megnéztem a beköszönő szöveget. Van vele baj rendesen (középpontozás például). Másrészt mi anyaországbeli magyarok könnyen vagyunk, mikor Szlovákiában már magyarul beszélni se szabad, nem hogy írni - olvasni tanulni.
Mindenesetre Speedfire javaslom, hogy a munka végén nézzétek át magukat a szövegeket, ha gondolod ebben akár ingyen is segítek (a többiek nevében nem akarok nyilatkozni).
-
Speeedfire
félisten
válasz
Sk8erPeter
#285
üzenetére
Valóban az volt a baj, most már tökéletesen működik.

-
Sk8erPeter
nagyúr
válasz
Speeedfire
#284
üzenetére
Szerintem az a gáz, hogy a linkelt példaoldalon valahogy beállítja a default style-t, azt nem néztem meg, hogyan, és így beállítódik a theme-default class a wrapper div-ben.
Tehát a kép körül van egy ilyen szülődiv:
<div class="slider-wrapper theme-default">
...
</div>Gondolom ezt a theme-default class-t pedig a NivoSlider állítja be.
Amúgy kemény a megrendelőd... "Úgy elrebben az idő körülöttünk, hogy észre sem vesszük" Jót röhögtem ezen a mondaton... akart valami bölcset mondani, és az jött ki, hogy "elrebben"?
Meg a logóban "Designe" (e betű) Mondjuk az se lenne rossz, ha egy fotósnak jó fotói lennének.
Na jó, nem gonoszkodom tovább.Szerk.: és ja, az volt, amit írtam, itt a tutorialban írják is, hogy a default theme-hez az a wrapper div legyen, amiről beszéltem.
Az Inspect Elementes bogarászásnál ez mennyivel gyorsabb lett volna.
-
Speeedfire
félisten
Valami css gondom van ezzel a nivo-val, de nem jövök rá. Valaki rápillantana erre?
-
raczger
őstag
válasz
Speeedfire
#281
üzenetére
Nivo slider, de van még egy pár ami így néz ki.
-
jeges
senior tag
válasz
Speeedfire
#278
üzenetére
hja, mer' így kéne: $(valami).val("");
-
jeges
senior tag
válasz
Speeedfire
#276
üzenetére
vesszők vannak a parancsok között. ez az eredetiben is így van?
szerk:
$(".kapcsolatokuzenet").val() = '';
$(".kapcsolatoknev").val() = '';
$(".kapcsolatokemail").val() = ''; -
Speeedfire
félisten
Újabb kérdés.

Adott egy ilyen kód:
function ajaxkeres() {
$.ajax({
type: "POST",
url: "kapcsolat.php",
data: "nev="+nev+"&email="+email+"&uzenet="+uzenet,
success: function(html) {
$(".kapcsolatokuzenet").val() = '',
$(".kapcsolatoknev").val() = '',
$(".kapcsolatokemail").val() = ''
}
});
}A success rész nélkül okés a folyamat, de a success résszel már elfut a kép. Lényegében csak törölni szeretném a formok értékét ha már sikerült a folyamat.

-
Speeedfire
félisten
válasz
Sk8erPeter
#274
üzenetére
Nekem az iPhoto jött be a legjobban. Megváltoztattam a szöveget. Én mondjuk pont egy kapcsolat űrlaphoz akartam, amit ajax-al küldök el, de valami frappáns megjelenítés legyen, hogy paraszt el van kűde az üzeneted.

-
Sk8erPeter
nagyúr
válasz
Speeedfire
#273
üzenetére
Jaja, amúgy az a Growl is nagyon jól néz ki, szerintem eléggé fasza, ha így mutatsz egy rövid üzenetet a felhasználónak. Amúgy jQuery UI theme-ekkel is össze lehet hozni. Meg hát elég durván eseményvezérelt, mármint minden apróbb történés (pl. amikor elsötétül a kép, vagy megjelenik az üzenet, bezáródik az overlay, stb.) kivált valami eseményt, amire lehet függvényeket kötni, az meg nagyon hasznos tud lenni, ha testre akarod szabni.
-
Speeedfire
félisten
válasz
Sk8erPeter
#272
üzenetére
Ez nagyon jó.

-
Sk8erPeter
nagyúr
válasz
Speeedfire
#271
üzenetére
Ja, sejtettem. Az előzőekkel is lehet, de akkor újabb példa: [jQuery BlockUI], itt nézd az "Auto-Unblock - Sets a timer to unblock after a specified timeout." részt.
De amúgy ilyen időzítőt a jQuery UI Dialog-hoz sem nehéz beállítani (vagy bármelyikhez). -
Speeedfire
félisten
válasz
Sk8erPeter
#270
üzenetére
Valami olyasmire gondoltam, mint amikor facebookon elküldök egy üzenetet. Felvillan egy kis ablak, hogy oké. Majd eltűnik.
-
Sk8erPeter
nagyúr
válasz
Speeedfire
#269
üzenetére
Ilyen fölső (vagy máshova is rakható) sávos megoldás, mint ez vagy ez? Mondjuk még hatmillió ilyen kis beépülőt lehet találni.
Amúgy meg nyilván bármi megoldható, ez is saját módon is.
Akár jQuery UI-os dialógusablakot is felvillanthatsz adott ideig, aztán eltünteted - az open esemény bekövetkeztekor elindítasz egy számlálót, annak lejártakor pedig meghívod a dialógus close metódusát... -
Speeedfire
félisten
Meglehet oldani, hogy egy alert ablak csak felvillanjon? Csak információt szolgáltat nem is kell semmilyen oké vagy bármilyen gomb.
-
Speeedfire
félisten
válasz
Speeedfire
#267
üzenetére
Solved.

-
martonx
veterán
válasz
Speeedfire
#265
üzenetére
CSS3-nak hívják

-
Speeedfire
félisten
Létezik olyan plugin amivel dinamikus elhalványodó bordert lehet készíteni?
Ami mondjuk a bal és jobb oldali részeket elválasztja egymástól? -
D@ni88
addikt
Igazság szerint nem akarok ajaxal betölteni semmit, mivel nem értek hozzá. Még alap szinten se...
Ezért azt gondoltam hogy betöltöm valamilyen rejtett mezőbe az összes adatot, és amikor rákattintok, akkor az űrlap feltöltődne az adott rejtett mező értékével.Vagy ha mutattok egy egyszerű ajax használatot, akkor megpróbálom felfogni

-
martonx
veterán
Szia!
A div-eid között legyenek hide-olt divek-is. Ezekben tudod tárolni a később használandó információt (pl. cikk azonosító). Esetleg html5 kompatibilis megoldás a data attribútum használata, de ez ma még böngészőfüggő.
Amikor a látható div-hez tartozó szerkesztés gombra kattintasz, akkor jquery-vel kiolvasod a hide-oltból, hogy mit is kell lekérned a szerverről, ajax-al lekéred, jquery-vel egy másik divbe betöltöd a kapott tartalmat. -
D@ni88
addikt
Hali,
Remélem tudtok segíteni.
Szeretnék egy olyan űrlapot létrehozni, amely alatt jó pár DIV tag van.
A div tagokban a cikkek egyes tulajdonságai szerepelnek, ezeket kellene szerkeszteni.
A Szerkesztést úgy gondoltam, hogy ha rákattintok a hozz tartozó szerkesztés gombra, akkor annak a cikknek az értékei töltődjenek be Jquery-vel vagy Javascript-el az megfelelő űrlap elemekhez.
Sajnos nem vagyok otthon ebben a témában, remélem tudtok segíteni.
Előre is köszi. -
Alukard
senior tag
válasz
Sk8erPeter
#258
üzenetére
jQuery 1.6.4
jQuery Mobile 1.0RC2És mobilon nem működik, hagyományos oldalon még nem próbáltam, és sorry, hogy lemarad...

-
Alukard
senior tag
Üdv!
Ha lehet kérnék némi segítséget... sajnos nem vagy sem jQuery sem JS guru, így marad az, hogy kérdezek

jQuery Mobile segítségével kéne megoldanom, hogy egy mobilos oldalon a submit gomb le legyen tiltva amíg az adott form összes eleme nem rendelkezik valamilyen értékkel.
Találtam egy ilyen kód részletet jQuery alá, de nem tudtam rávenni, hogy a Mobile változattal is működjön... esetleg valakinek van valami ötlete?$(document).ready(function() {
$form = $('#formid'); // cache
$form.find(':input[type="submit"]').prop('disabled', true); // disable submit btn
$form.find(':input').change(function() { // monitor all inputs for changes
var disable = false;
$form.find(':input').not('[type="submit"]').each(function(i, el) { // test all inputs for values
if ($.trim(el.value) === '') {
disable = true; // disable submit if any of them are still blank
}
});
$form.find(':input[type="submit"]').prop('disabled',disable);
});
}); -
szmegma
aktív tag
válasz
Speeedfire
#254
üzenetére
Pont egy ilyen kodot kerestem es ha nem problema fel szeretnem hasznalni.
Nekem mas projecthez kell, igy kicsit atalakitottam.

-
Speeedfire
félisten
válasz
Speeedfire
#253
üzenetére
Ok, meg is van a hiba. N00b vagyok, hiszem ahogy írtad id-t kér, nem pedig div elemet.
szoveg = tinyMCE.get("#hirtinyform").getContent();
csere
szoveg = tinyMCE.get("hirtinyform").getContent();Tádádádááááá, most megy.

-
Speeedfire
félisten
Id-val sem megy.

<?php
//email címek megszámlálása
$SqlQuery = "select * from hirlevel where elfogad = 1";
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$SqlQuery = mysql_query($SqlQuery);
if (!$SqlQuery) {
die('Hiba: ' . mysql_error());
}
$max = mysql_num_rows($SqlQuery);
?>
<script type="text/javascript" >
$(document).ready(function() {
var i = 1;
var max = <?php echo $max;?>;
var szoveg;
var targy;
$(".hirleveladatok").hide();
$("#hirlevelformdiv form").submit(function() {
targy = $("#hirlevelformdiv input").val();
szoveg = tinyMCE.get("#hirtinyform").getContent();
document.write(targy);
document.write('<br/>');
document.write(szoveg);
//$("#hirlevelformdiv").hide('slow');
//$(".hirleveladatok").show('slow');
//ajaxkeres();
return false;
});
function ajaxkeres() {
$.ajax({
type: "POST",
url: "kuld.php",
data: "i="+i+"&t="+targy+"&sz="+szoveg,
success: function(msg){
var szam = msg;
$("#szamol").replaceWith("<span id='szamol'>"+szam+"</span>");
$("#tolt").css("width",(100/max)*i+"%");
},
complete: function() {
if (i==max) {
$("#tolt").replaceWith("<p class='siker'>Kész!</p>");
}
else {
i++;
ajaxkeres();
}
}
});
}
});
</script>
<?php
echo '
<div id="hirlevelformdiv">
<form action="" method="post">
<label>A hírlevél tárgya</label>
<i>Pl Friss akciók</i><br/>
<input type="text" name="targy" value="Tárgy...">
<br/><label>A szövegtörzs</label>
<i>A levél tartalmi része ide jön</i>
<textarea id="hirtinyform" name="szoveg" class="mcEditor"></textarea>
<br/><input type="submit" value="Üzenet küldése">
</form>
</div>
<div class="hirleveladatok">
<p>
<span id="szamol">1</span>
<span>/</span>
<span id="maxelem">
'.$max.'
</span>
</p>
<div id="tolt"></div>
</div>
';
?>A
document.write(targy);
document.write('<br/>');
document.write(szoveg);Rész csak a tesztelés miatt van.
-
Coyot
őstag
válasz
Speeedfire
#251
üzenetére
én így használom és működik, bár a lementés alatt nem tudom mit értesz, ez a JS függvény csak visszaadja az aktuális tartalmat, az hogy mit kezdesz vele az már rád tartozik. viszont id-val hivatkozik tehát a tinymce-d ID ja kell neki, értelemszerűen ID-s módban kell a tinyt használni hozzá.
max ha közzé teszed a kódot meg lehet nézni, így látatlanba ennyit tudok segíteni.
-
Speeedfire
félisten
Undefined lesz a végeredménye.


Coyot: Nem menti le.
Elhiheted, hogy gugliztam folyamatosan.

martonx: Azt, hogy újratölti az oldalt, holott én a parancs végén megmondtam neki, hogy return false. Ez a event.preventDefault() sem vált be, itt is azt írja ki hogy undefined.Lehet tényleg váltok egy másikra. Ismerem a kceditort, drupal alatt azt használom, csak ez a tinymce mintha kicsit egyszerűbb lenne.

-
martonx
veterán
válasz
Speeedfire
#244
üzenetére
egyébként miért pont tiny. Ez a legkevésbé jquery kompatibilis. Javaslom helyette az fckeditor-t, vagy a cleditor-t. A cleditor különösen jó, mert 9Kb, azaz az oldal betöltődését nem lassítja, és közben egész sokat tud.
-
martonx
veterán
válasz
Speeedfire
#241
üzenetére
mit értesz az alatt, hogy elfutott a kép???
Végrehajtódott a submit?e.prevendefault vagy valami ilyesmi paranccsal meg tudod akadályozni, hogy elfusson a kép. Már ha jól értettelek.

-
Coyot
őstag
válasz
Speeedfire
#246
üzenetére
jajhát, guglizz!

function getText(id)
{
var content= tinyMCE.get(id).getContent();
//alert(content);
return content;
}
én ezt init előtt szoktam bepakolni. aztán tetszőleges számú tiny közül is mindig tudom melyiknek mi a tartalma. eccerű naccerű.
-
PazsitZ
addikt
válasz
Speeedfire
#246
üzenetére
triggerSave().
Majd le kellene tudnod menteni a textarea value-ként. -
Coyot
őstag
válasz
Speeedfire
#244
üzenetére
jahogy tiny.
tiny api ban nézd meg van rá egy JS függvény. de google a barátod

-
Coyot
őstag
válasz
Speeedfire
#241
üzenetére
az értékét meg .val() al veszed ki, nem pedig html-el.
-
Coyot
őstag
válasz
Speeedfire
#241
üzenetére
hirleveldivform html elem biztos hogy nicns, az vagy class vay ID.
-
martonx
veterán
válasz
Speeedfire
#239
üzenetére
ugyan nem próbáltam, de a tinymce is gondolom, hogy egy textarea fölé van húzva. Namost a textarea html-jét bármikor ki tudod olvasni jquery-vel. Nem kell ehhez semmi extra tinymce-s függvény.
Ez a módszer fckeditor-ral biztosan működik, nem hinném, hogy tinymce-vel ne működne. -
martonx
veterán
válasz
Speeedfire
#237
üzenetére
Mi volt a másik?
-
martonx
veterán
válasz
Speeedfire
#233
üzenetére
szerintem meg ez a változó deklarálás így nem globális. Illetve helyileg új változókat deklarálsz, és azoknak adsz értéket.
var szoveg = $("#hirlevelformdiv input").val();
var targy = $("#hirlevelformdiv textarea").val();Helyesen:
szoveg = $("#hirlevelformdiv input").val();
targy = $("#hirlevelformdiv textarea").val(); -
jeges
senior tag
válasz
Speeedfire
#233
üzenetére
az elsőhöz egy kérdés: van minden input-nak érvényes 'name' tulajdonsága?
-
Speeedfire
félisten
Még mindig a fenti hírlevéllel kapcsolatban lennének kérdéseim.

$(document).ready(function() {
var szoveg;
var targy;
var i = 1;
var max = <?php echo $max;?>;
$(".hirleveladatok").hide();
$("#hirlevelformdiv form").submit(function() {
var szoveg = $("#hirlevelformdiv input").val();
var targy = $("#hirlevelformdiv textarea").val();
$("#hirlevelformdiv").hide('slow');
$(".hirleveladatok").show('slow');
ajaxkeres();
return false;
});
function ajaxkeres() {
$.ajax({
type: "POST",
url: "kuld.php",
data: "i="+i+"&t="+targy+"&sz="+szoveg,
success: function(msg){
var szam = msg;
$("#szamol").replaceWith("<span id='szamol'>"+szam+"</span>");
$("#tolt").css("width",(100/max)*i+"%");
},
complete: function() {
if (i==max) {
$("#tolt").replaceWith("<p class='siker'>Kész!</p>");
}
else {
i++;
ajaxkeres();
}
}
});
}
});Az ajaxkeres()-ben a szoveg és a targy részeknek nem adja át az értékeket, amikor a submit esemény van, pedig globálisan vannak megadva ezek. Mi a gond vele?
Illetve a szoveg egy tinymce-ből lenne kimerve, de nem tudom mert a tinymce teljesen átalakítja. Van erre valami megoldás?
-
Speeedfire
félisten
A múltkor kódot kicsit modosítani akarom, de mindig elfut a kép, mert egy formot akarok postolni (hírlevél tárgya, szövegtörzse). Mi a megoldás erre?
$("#hirlevelformdiv form").submit(function() {
$("#hirlevelformdiv").hide("slow");
$(".hirleveladatok").show("slow");
ajaxkeres();
});Ugye az lenne a lényeg, hogy amikor elküldöm az adatokat akkor a form eltűnik és helyette egy másik div "bukkan" fel amin mutatja, hogy mennyiből mennyi van hátra, illetve egy dinamikus progress bar is van, ami jelzik vizuálisan is.
A formnál az action-höz nincs írva semmi sem, szóval elvileg magát hívja meg a php. Ekkor kellene a .load() függvény?
-
Speeedfire
félisten
Közben sikerült megoldani teljesen.
$(document).ready(function() {
var i = 1;
var max = <?php echo $max; ?>;
ajaxkeres();
function ajaxkeres() {
$.ajax({
type: "POST",
url: "kuld.php",
data: "i="+i,
success: function(msg){
szam = msg;
$("#szamol").replaceWith("<span id='szamol'>"+szam+"</span>");
},
complete: function() {
if (i==max) {
$("#kesz").append('Kesz!');
}
i++;
ajaxkeres();
}
});
}
}); -
martonx
veterán
válasz
Speeedfire
#229
üzenetére
úgy gondolom, hogy kaptál jeges-től és tőlem is egy-egy konkrét megoldási javaslatot. Ezek alapján már megoldható a feladat.
-
Speeedfire
félisten
válasz
Speeedfire
#228
üzenetére
A js részt így próbáltam megcsinálni, de nem akar összejönni. Most egy egyet csinál meg, nem megy tovább a program...
$(document).ready(function() {
var i = 1;
var max = <?php echo $max; ?>;
for (i; i<=max; i++) {
var idofolyam = setInterval(ajaxkeres(i),5000);
}
function ajaxkeres(i) {
$.ajax({
type: "POST",
url: "kuld.php",
cache: false,
async: true,
data: "i="+i,
success: function(msg){
$(".szamol").replaceWith(msg);
}
});
if (i==max) {
$("#kesz").append('Kesz!');
clearInterval(idofolyam);
}
}
}); -
Speeedfire
félisten
Nos! Dolgozgattam az ajaxos levélküldésen, de nem kerek még.
index.php
<?php
session_start();
//email címek megszámlálása
$max = 20;
?>
<html>
<head>
<script type="text/javascript" src="js/jquery.js" ></script>
<script type="text/javascript" >
$(document).ready(function() {
var i = 1;
var max = <?php echo $max; ?>;
for (i; i<=max; i++) {
$.ajax({
type: "POST",
url: "kuld.php",
cache: false,
async: true,
data: "i="+i,
success: function(html){
$("#szamol").append(html);
}
});
if (i==max) {
$("#szamol").append('Kész!');
}
}
});
</script>
</head>
<body>
<h1>Hirlevel</h1>
<div id="szamol">
szamolas<br/>
</div>
</body>
</html>kuld.php
<?php
$i = mysql_real_escape_string($_POST['i']);
//adatbázis lekérdezés
//.....
echo $i.'<br>';
//üzenet küldése
//....
?>A kimeneten a kész szöveg előrébb van, mint a számok. Illetve az összes szám megjelenik a kimeneten, de nem jó sorrendben.
A lényeg annyi lenne, hogy inkább egyesével küldöm el a leveleket, az adatbázisban meg a limittel fogok játszani. limit $i, 1Meglehet oldani, hogy a kész csak akkor jelenjen meg ha már elküldte az összes levelet? Illetve csak akkor növelje a js az i értékét ha a success-nak van visszatérési értéke? Jobban mondva van értéke.

-
jeges
senior tag
válasz
Speeedfire
#226
üzenetére
"hogyan csinálom azt, hogy a php visszaküld egy jelet egy adott divbe"
kliensen csinálsz egy átmeneti tároló div-et, és abba írod az eredményt a szerverről (semmi különösre nem kell gondolni, ahogy a $.load()-nak is megadsz egy "kimenet" elemet - jellemzően div -, úgy értem itt is.)
szerver-oldalon ez print vagy echo. -
Speeedfire
félisten
jeges & martonx: Na ez így elsőre még bonyolúltabb, mint gondoltam. Pénteken lesz rá időm, szerintem akkor jobban belevetem magam a dologba.
Csak az a kérdés, hogy hogyan csinálom azt, hogy a php visszaküld egy jelet egy adott divbe?
Az hittem egyszerűbb lesz, valami subrutinnal mindig meghívja majd magát az ajax függvény és a param értékét megváltoztatja.
-
martonx
veterán
válasz
Speeedfire
#223
üzenetére
mondjuk én adatbázis buzi vagyok, én beletenném egy táblába az email címeket, melléjük pedig egy oszlopban jelezném, hogy elküldtük-e.
A js csak annyit csinálna, hogy ajax-al meghívja a kuld.php-t, ami egyenként elkezdi küldeni a leveleket, egyúttal egy sessionbe beteszi a PHP, hogy éppen hol tart a küldéssel.Az ajax hívás kezdetén pedig indítanék egy setinterval-t, ami mondjuk x másodpercenként lekérdezi a PHP által írt session-t, és megjeleníti a sessionben lévő darabszámot.
Így szépen fog látszódni, hogy hány darabnál tartasz, és erre a visszakapott darabszámra bármilyen jquery-s progressbar-t játszva rá lehet húzni.
Mondjuk mindez nem oldja meg a php timeout-ot. Ha valami rendesebb tárhelyed van (vagy van ráhatásod a php.ini-re), akkor azért a php-d akár több 10 percig is futhat.
-
jeges
senior tag
válasz
Speeedfire
#223
üzenetére
ezt úgy lehetne megoldani, hogy a php-kód minden csomag elküldése után küld egy jelet a kliensnek (ez a "jel" aztán megjelenik a kliens valami div-jében). a kliensen mondjuk másodpercenként lekérdezed, hogy mi van a php-kód kimenetén, és ha változás van, jelzed a felhasználó felé, ha meg nincs, akkor valami timeout (mondjuk 15 másodperc) után leállítod a programot.
setInterval() fv alkalmas kliens oldalon az ütemezett lekérdezésrea kódok felépítése valahogy így nézne ki:
js:
1) szöveg küldése a php-nak, php-kód indítása - ez az ajax hívás
2) felület tiltás (modális ablak vagy fedőréteg)
3) ütemezett lekérdezés, mi van a php-kód kimeneti div-jében
4) a. ha a kimenet változik, elküldött levelek újraszámolása, frissítés a felhasználó felé
4) b. ha elértük a 3000-et (100%-ot), örülünk és leállítjuk a kódot
4) c. ha nem értük el a 100%-ot és timeouton túl nincs változás, leállítjuk a futást és megkérjük a júzert, hogy később próbálja újra vagy vegye fel a kapcsolatot a helpdesk-kelphp:
1) a js hívására a kapott szöveg alapján tömbönként elkezdjük kiküldeni a leveleket
2) minden elküldött tömböt tárolunk adattáblában, és minden elküldött tömb után küldünk jelet a kliensnek az elküldött levelek vagy tömbök számáról
3) a. ha végeztünk, leállunk (valami spec "vége" jel a kliensnek)
3) b. timeout - ez asszem automatikus szerver-oldalon (legalábbis php/apache esetében emlékeim szerint van valami automatizmus, ami leállítja a végtelen ciklusba került kódot), de őszintén megmondom, nem tudom most fejből. -
Speeedfire
félisten
Az elvárt működés annyi lenne, hogy van pl 3000 email cím egy táblában. Admin felületen megírom a formban a levél törzsét majd rányomok a küldésre. Ekkor az ajax meghívja a kuld.php fájlt ami 50-esével elküldi a levelet. Lekérdez 50 email címet, megcsinálja, majd a következő 50-et és így tovább, amíg el nem fogynak az email címek.
Közben az admin felületen majd jelzi egy kis számláló, hogy a 3000-ból x van elküldve már. Ha 3000/3000 lesz a vége akkor meg szépen kiírja, hogy vége.

Azért van erre szükség, mert ha nagyon sok email cím van akkor a php egy idő után megakar időtúllépés miatt. Sok tárhelynél meg nincs cron se.

martonx: Lehet progress bar is, de az már csak hab lenne a tortán.
Azért akarom, hogy a js is tudja az i értékét, hogy amikor ismét meghívja az elkuld.php oldalt akkor már a paramban nem i=0 legyen hanem i+50 és így tovább. Szóval folyamatosan változna az i értéke. Agyaltam, hogy megoldani session-nel, de utána gondolkoztam, hogy valami más megoldás is biztos van erre.
-
martonx
veterán
válasz
Speeedfire
#220
üzenetére
Te most valamiféle progress bar-t akarsz jquery-vel mutatni, ami jelzi a usernek, hogy mondjuk 3000-ből 45%-nál tart a feldolgozás?
Vagy miért kell a js-nek szinkronban lennie a php-vel? Az Ajax-nak a nevében is benne van, hogy aszinkron
-
jeges
senior tag
válasz
Speeedfire
#220
üzenetére
nem biztos, hogy jól értem. mi lenne az elvárt működés? php küld levelet valami jq-s admin felületen történt gombnyomás hatására?
-
martonx
veterán
válasz
Speeedfire
#218
üzenetére
success: function-be $(".szamol").append(html); után beleraksz egy újabb ajax-ot. Ennyi. Vagy félreértettelek?
-
Speeedfire
félisten
válasz
Speeedfire
#217
üzenetére
Javítva ez a sor és már megy is.

$(".szamol").append(html);
Márcsak azt kellene megoldani, hogy ezután az ajax ismét lefusson csak már data értékkel.

-
Speeedfire
félisten
Kis jquery ajax php házasításon dolgozok. Ehhez szeretnék segítséget kérni.
Lényegében egy hírlevél küldésről lenne szó, ami 50-esével küldi el a leveleket. Egyelőre hót' koki vagyok az ajaxhoz.
Kis példán dolgoztam magamnak, hogy működik-e. De nekem nem akar.
index.php:
<html>
<head>
<script type="text/javascript" src="js/jquery.js" ></script>
</head>
<body>
<h1>Hírlevél</h1>
<script type="text/javascript" >
$(document).ready(function() {
$.ajax({
type: "POST",
url: "kuld.php",
cache: false,
data: "i=1",
async: true,
succes: function(html){
$(.szamol).append(html);
}
});
});
</script>
<div class="szamol">
számolás<br/>
</div>
</body>
</html>kuld.php:
<?php
$i = $_POST['i'];
$max = 20;
for ($i; $i <= $max; $i++){
echo $i.'<br/>';
}
?>Valami észrevétel javaslat?

A kiírás meg minden változna majd természetesen. Csak jó lenne ha legalább ez adna valamit vissza.

-
sptkyle
senior tag
Sziasztok. A Jquery alapú Cufón megoldást használta már valaki? Help kellene, mert bár elvileg egyszerű, az istenért nem akar müködni.

-
szmegma
aktív tag
válasz
Sk8erPeter
#213
üzenetére
Nem veszem kontarkodasnak de ha ilyen okos lennek elhiszed nekem, hogy nem igy csinaltam volna meg? Foglamam sincs a jQuery ezen szintjerol. Nem latom at amit irtal, hogyan is kellene aszerint elkesziteni a kodot.
Termeszetesen a visibility, id szetbontogatos cucc kenyszer megoldas, mivel nem tudom, mashogy megcsinalni.
Olvastam tobb oranyit a jQueryrol de jelenleg itt tartok, annyi a tudasom.

Ha esetleg dobnal egy kis morzsat, hogyan is kellene akkor vennem a faradsagot es probalgatnam szabad idomben vegig jarni az utat, hatha megertem azt.
Koszonom.
-
Sk8erPeter
nagyúr
Bocs, hogy belekontárkodom, nagyon sok részletből kimaradtam, és nincs is időm elolvasni az egész korábbi társalgást erről a súgó-megjelenítős dologról, de tulajdonképpen minek játszol a visibility CSS-tulajdonsággal? Van ezzel valami különösebb célod? Csak kavarja az egészet, a slideUp/slideDown tulajdonság állítgatja a display property-t (és azzal együtt nyilván folyamatosan dinamikusan változtatgatja pl. a height tulajdonságot), annak elégnek kellene lennie.
Ezentúl tulajdonképpen nem látom be, miért is van szükség erre az id-t szétbontós dologra split() függvénnyel, nagyon rugalmatlan megoldás, könnyű elrontani. Ha már ilyen módon van felépítve, nyugodtan lehetne a siblings() VAGY prev() vagy next() függvényeket használni. Egyébként is érdemes lenne egy nagyobb div-be vagy hasonlóba bepakolni magát a kérdőjelet, plusz a hozzá tartozó súgót, hogy logikailag is összetartozzanak, és akkor máris el lehet kerülni azt, hogy az id-k nevéből kelljen kisajtolni egy számot, majd erre hivatkozni, stb... melós. Amúgy amikor azt az esetet veszem, amit a 3. pontban írtál, látszik, hogy a display block-ra állítva marad, csak a visibility változik. Mintha egyáltalán nem törlődne az időzítés a clearTimeout-nál.
(Megjegyzés, hogy szerintem az ilyen elnevezések, mint a var css; és ehhez hasonlók, nem túl szerencsések, mert könnyen megkavarhatják az embert hosszabb kódnál (lásd ugyanilyen nevű függvény is van jQuery-nél). Lehetne inkább var dt_display; vagy valami ilyesmi, csak ne hasonlítson foglalt nevekre.)
Egyébként elméletileg nem lenne szükség az each() függvényre, ahogy ugye itt a slideUp() függvénynél is sok div-et tüntet el egyszerű $("div").slideUp(); segítségével (ciklikusan végigmegy az összes egyező elemen).Igazából nem is kéne if-ekkel vizsgálgatni, miután végighaladtál ciklussal az összes elemen, hogy meg van-e jelenítve, ahogy most csinálod ( if(css == "block") ), hanem kattintáskor
1.) törölni az összes beállított timeout-ot
2.) egyszerűen a kérdőjelre való kattintásra vonatkozó (click) tulajdonságra rákötni, hogy az összes súgót tartalmazó elemet (nálad dt-t) slideUp-olja - még akkor is, ha egyetlen egy elem sincs megjelenítve, ez úgyis annyira gyorsan történik, hogy itt rohadtul nem számít, hogy végigvizsgálgattad-e egyesével; sőt, ezt megteszi helyetted a jQuery! Nyilván ha meg van jelenítve, akkor animálva eltünteti, a display-t a végén none-ra állítva, ha nincs, megy tovább a következő talált elemre.
3.) az adott elem melletti súgót tartalmazó elemet (buborékszerűséget) megjeleníteni slideDown-nal (vagy ahogy épp meg akarod jeleníteni a súgót)
4.) beállítani a setTimeOut-ot a kívánt időmennyiségre, aminek a végén slideUp-olod a súgót, hogy eltűnjön.Szóval szerintem bőven lehetne egyszerűsíteni a kódon.
-
szmegma
aktív tag
Nem, nem. Probald csak ki ebben a sorrendben:
1, kattints a 3. kerdojelre
2, mielott becsukodna a 3. box kattints az 5. kerdojelre
(A 3. boxot nem az IF vagy ELSE agban levo eltunteto kod tunteti el, hanem ez => $("dt").css("visibility", "hidden"); ami kozvetlen a click utan fut le)3, mielott becsukodna az 5. box kattints megint a 3. kerdojelre
Ekkor lathatod, hogy az 3. box nem kinyitodik ahogy kellene, hanem eppen csak megjelenik es mar el is tunik vagyis az IF agban levo $("dt").slideUp("slow"); tunteti el ami helyes hiszen a display erteke BLOCK maradt, mivel a $("dt").css("visibility", "hidden"); resz tuntette el.
Magyarul vhogy NONE-ra kellene allitani az display erteket annak a boxnak amit $("dt").css("visibility", "hidden"); resz tuntet el.
Gondoltam, hogy hat ez pofon egyszeru: $("dt").css("display", "none"); reszre kell lecserelni, de NEM!
-
szmegma
aktív tag
Ez lesz az, mar csak tudni kene pontosan, hogy hova kell mit raknom.
Szoval a clear() es delay() cuccokat kellene ugy elhelyezni, hogy amikor en zarom vissza a nyitott boxot, akkor a display erteket is allitsa be NONE-ra, mivel az marad BLOCK erteken, ezert ha ujra egy altalam bezart kerdojelre kattintok akkor annak display BLOCK ertekenek koszonhetoen megint az IF ag fut le es nem az ELSE.
Celegyenesben vagyunk...otlet?
-
jeges
senior tag
az if ág fut le (különben nem azt írná ki), de valami miatt nem jut érvényre a fadeout. ennek több oka is lehet: vagy a már lefutott, de késleltetett kód, vagy valami visibility jellemző.
setTimeout ügyében
a lényeg:
indítás:
var t = setTimeout(function(){...},1000);törlés:
clearTimeout(t);ha nem törlöd, lefut a function(){} 1 másodperc múlva
Nálad az indítást és megállítást az else és if ágakra lehet tenni (persze a definiálatlan t értéket kezelni kell)
-
szmegma
aktív tag
Vissza pakoltam a display es id == _id ellenorzest mert tenyleg az hianyzott.
Mostmar 99%-ban ugy mukodik, ahogy kell viszont van egy ici pici problema:
Amikor mondjuk kattintasz a 3. kerdojelre es megjelenik a 3. box tartalma:
1, nem kattintasz sehova szepen becsukodik magatol ahogy kell
2, kattintasz egy masik ID-ju kerdojelre szepen eltunteti az elozo nyitottat
3, ha a nyitott box kerdojelere kattintasz akkor mint a log is mutatja jobb szelen megvaltozik a display NONE-rol BLOCK-ra, am megsem az IF agban levo kod fut le.
direkt beallitottam fadeOut()-ra az IF agban levo eltuntetest, hogy lathato legyen az effekt.Ezt a hibat nem hinnem, hogy a delay() okozza.
Ha igen, akkor aruld mar el legy szives, hogyan lehetne azzal a setTimeout cuccal eltuntetni a delay() helyett? -
jeges
senior tag
ez rendben, de mint fent írtam, ha jól értem nincs garancia arra, hogy javítható a nem várt működés, amit a delay okoz. ezt valószínűleg a delay mellőzésével lehetne csak orvosolni.
egyébként most már helyes eredményre vezethet a két érintett id vizsgálata, csak magát a vizsgálatot kivetted a kódból - pedig korábban ez már működött. valszeg a display feltétel is jó volt, bár ezt lehetne tesztelni. -
szmegma
aktív tag
Na kicsit belemelyedtem es az each es addclass reszt egybegyurtam:
Itt ha megnezed es kiprobalod, akkor mar eleg jol elkuloniti az IF ELSE, hogy melyik ID lett kattintva es annak milyen a statusza illetve a tobbi ID-nek milyen a stausza.
Ebben az elagazasban nem lehet vhogy megjeleniteni amit szeretnek?

-
jeges
senior tag
az újra-felugrást valszeg nem fogod tudni megakadályozni. részlet a jquery dokumentációból:
"The .delay() method is best for delaying between queued jQuery effects. Because it is limited—it doesn't, for example, offer a way to cancel the delay—.delay() is not a replacement for JavaScript's native setTimeout function, which may be more appropriate for certain use cases."
ha a korábban elindított késleltetett futást szeretnéd törölni, arra csak a setTimeout vagy setInterval alkalmas.(mindenesetre írass ki egy $(this).css("display")-t is, hogy lásd, teljesül-e a feltétel.)
-
szmegma
aktív tag
<script type="text/javascript">
$(document).ready(function() {
var yOffset = 15;
var xOffset = -23;
$(".dt").hide();
$(".help").click(function(e){
var id = $(this).attr("id").split("-")[1];
$(".dt").each(function(){
var _id = $(this).attr("id").split("-")[1];
if(id != _id){
$(".dt").hide();
//alert(_id+"<>"+id);
}
else{
//alert(_id+"|"+id);
if ($(this).css("display") == "none"){
$("#f"+id).css("top", "12px").css("left", "-9px").css("position", "absolute").css("z-index", "9999");
$("#i-"+id).css("top", (e.pageY + xOffset)+"px").css("left", (e.pageX + yOffset)+"px").slideDown("slow").delay(2000).slideUp("slow");
}
return false;
}
});
});
});</script>Igy nez ki jelenleg es csak azert sem mukodik.

Viszont vmit eszre vettem. MOndjuk kattintok a 3. kerdojelre, ekkor 3 alert ugrik fel:0<>2
1<>2
2|2Ha megnezed a koztuk levo separatort lathatod, hogy az elso 2 alert az if(){ alert(_id+"<>"+id); } reszbol ugrik elo, az utolso alert pedig az else{ alert(_id+"|"+id); } reszbol ugrik elo.
Ekkor ha ujbol kattintok a 3. kerdojlere (meg nyitva van a box) csak megismetli a 3 alert-et ugyanazzal a tartalommal, majd eltunteti a boxot (SIKERULT) am ujbol futtatja a slideDown("slow").delay(2000).slideUp("slow") reszt is igy megint lenyilik a box es a delay() pedig osszecsukja (NINCS SIKER).

Nem ertem miert fut le az IF es ELSE ag is...
-
jeges
senior tag
nem az a baj, hanem az, hogy a .click a .help-re vonatkozik, az .each pedig a .dt-re. ezeknek soha nem lesz egyforma az id-jük, csak a sorszámuk (a kötőjel utáni rész). azaz az id-t kell kivenni mindkét elemből, és csak a sorszámukat hasonlítani:
var postid = $(this).attr(id).split("-")[1];
if (id != postid){
...
Új hozzászólás Aktív témák
- OLED monitor topic
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- sziku69: Szólánc.
- Futás, futópályák
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- eBay-es kütyük kis pénzért
- Vezetékes FEJhallgatók
- Milyen routert?
- További aktív témák...
- Xiaomi Redmi 14C 128GB, Kártyafüggetlen, 1 Év Garanciával
- Lenovo ThinkPad T14S Gen1 Intel i5-10310U
- HIBÁTLAN iPhone 12 Mini 64GB Purple -1 ÉV GARANCIA - Kártyafüggetlen, MS3481,96% Akkumulátor
- GYÖNYÖRŰ iPhone 13 Pro 256GB Sierra Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3361
- REFURBISHED - Lenovo ThinkPad 40AF Dock (DisplayLink)
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Promenade Publishing House Kft.
Város: Budapest




Meg a logóban "Designe" (e betű) Mondjuk az se lenne rossz, ha egy fotósnak jó fotói lennének.
Na jó, nem gonoszkodom tovább.












