Hirdetés

Keresés

Új hozzászólás Aktív témák

  • SektorFlop
    aktív tag

    Nem értem mi a baj az onClick-el?

    közbe sikerült megoldanom, am semmi baj az onClick-el, csak ha keretett adok neki meg kellett oldani hogy az előző kép keretét állítsa vissza.

  • SektorFlop
    aktív tag

    kiraksz hide-olt input-ot.
    Amikor user rákattint a képre, annak valami azonosítóját js-el betöltöd input value-jába, és amikor elküldöd a szervernek, akkor ezt a value-t fogod figyelni, és elmenteni.

    Köszi! Ezért szeretek ide írni, mert pl ez eszembe se jutott pedig annyira kézenfekvő a dolog. Viszont még egy kérdés, a keretet hogy tudnám megoldani? Mert ha onClick-re állítom azt is akkor, az összes képet kijelöli amire klikkel a felhasználó.

  • SektorFlop
    aktív tag

    Sziasztok!

    Jelenleg, van egy avatar kép választóm semmi extra:

    for($i=1;$i<=10;$i++){
    $content.= '
    <span style="display: block; float: left;"><img src="style/avatar/'.$i.'.png" width="50px">
    <br><input type="radio" value="'. $i.'" name="avatar"></span>
    ';
    }

    Ahogy látjátok az avatar képek alá raktam egy radio button, de azt a radio butotn szeretném lecserélni, egy szebb megoldásra. Gondoltam egy olyanra hogy ha a képre kattintok akkor kijelüli és egy kerettel ezt ki is emeli. És csak akkor cseréli az avatar képet ha rányomok egy gombra. Úgy mond egy kiválasztó funkciót szeretnék csinálni.

    Azért írtam ebbe a topikba, mert valami JS-es megoldásra gondoltam. Tudna esetleg valaki mondani egy elinduló pontot. Mert egyenlőre még nem tudom hogy kellene neki indulni.

  • SektorFlop
    aktív tag

    Lehet, miért ne. :D
    Végül melyik megoldást választottad?

    Maradtam annál, hogy az oldal illeszkedjen a böngésző kijelző méretéhez, annyi kritériumot adtam neki, hogy csak 2 elem változik dinamikusan a háromból, és és lefixáltam hogy 1000x670 pixel legyen a legkisebb (Ezt kb 1024x768-as felbontásnak felel meg, és ennél nagyobb felbontás esetén méretezi csak az oldalt át). Így nem kellett bíbelődni a betűmérettel, nagyon felbontáson és mobil készülékeken is tökéletes a megjelenítés. Szóval elvetettem a javascriptet, de amúgy nem is funkcionált úgy a dolog ahogy terveztem volna. Nem tudtam tökéletesen beállítani, hol túl kicsik voltak a betűk, hol túl nagyok és összefolytak.

    De amiket itt leírtam inkább már CSS, szóval nem itt lenne a helye, elnézést is kérek érte. :)

    Annyit hozzáteszek hogy tetszik ez a megoldás, ha az oldal tartalma nagyobb mint ami kiférne akkor se nyúlik tovább és jelenik meg oldalt a böngésző görgető sáv, hanem az aktuális div-ekre ahol hosszabb tartalmak vannak, egy szép jQuery-s scrollbar-t állítottam be.

  • SektorFlop
    aktív tag

    Pont ezért írta korábban Karma, hogy jsFiddle-re rakjál már fel példát, hogy lássuk, mivel próbálkoztál, és esetleg meg is tudjuk mondani, mi a hiba, ne nekünk kelljen már szenvedni és időt tölteni vele, hogy még ezt is összehozzuk.
    Szerinted mit mondanak az autószervizben, ha azt mondod, hogy otthon van a kocsid, és nem működik, de nem tudod, miért, mondják már meg, hogy mi a baja?

    (#2940) SektorFlop : ugyanez vonatkozik rád is. :) Oszd meg, hogy mivel próbálkoztál, mert különben nem fogunk tudni segíteni.
    És ha témával kapcsolatos (van benne JS) a hsz.-ed, ne rakd OFF-ba. :D

    Rendben legközelebb már felrakom az aktuális dolgokat, de közbe már feladtam a betűméretezést, találtam jobb megoldást a megjelenésre.

    UI: Ilyenkor már mehet off-ban? Már régóta fórumozom itt, de nem tudom mikor mi a szokás, bocsánat. :B

  • SektorFlop
    aktív tag

    Sziasztok!

    Saját projektem desing-én dolgozom, az úgy nevezett responsive style-t követném, ha így kell írni. Elsőnek csinálok ilyet, ahhoz képest alakulgat egész jól. Viszont próbáltam a betű méretett is százalékban megadni, de rá kellet jönnöm hogy az se használ. A böngésző átméretezésénél a karakterek egymás alá folynak. Egyik ismerősöm megemlítette, hogy js-el lehet állítani a karakterek méretét úgy hogy a böngésző ablakához igazodjon.

    Valaki megtudná mondani, hogy mi kellene pontosan keresnem, mert útbaigazítást viszont nem adott.

    közben találtam egy ilyet, szerintem ez kell nekem: [link]

    csak nem akar valamiért szuperálni. :(

  • SektorFlop
    aktív tag

    Sziasztok!

    Saját projektem desing-én dolgozom, az úgy nevezett responsive style-t követném, ha így kell írni. Elsőnek csinálok ilyet, ahhoz képest alakulgat egész jól. Viszont próbáltam a betű méretett is százalékban megadni, de rá kellet jönnöm hogy az se használ. A böngésző átméretezésénél a karakterek egymás alá folynak. Egyik ismerősöm megemlítette, hogy js-el lehet állítani a karakterek méretét úgy hogy a böngésző ablakához igazodjon.

    Valaki megtudná mondani, hogy mi kellene pontosan keresnem, mert útbaigazítást viszont nem adott.

  • SektorFlop
    aktív tag

    Így is lehet, de inkább ténylegesen stringként csapd hozzá az azonosítót, hogy mindig az elvárt eredményt kapd:
    'user/user.php?insert=ok&azonosito='+<?php echo $azonosito;?>
    HELYETT
    'user/user.php?insert=ok&azonosito=<?php echo $azonosito;?>'
    (magyarul PHP-vel fűzöd hozzá)

    Ennek a megoldásnak viszont hátránya, hogy nem szép, mert kevered a JavaScript-kódot a PHP-kóddal, ami szemantikai keveredés, alapvetően kerülendő. Itt már inkább egy JS-ben definiált változót kellene inkább hozzáfűznöd.
    De ettől függetlenül nem csinálsz nagy butaságot ezzel a megoldással, max. kényelmetlen, de így is használható.

    inkább rejtett mezőbe raktam az azonositót. úgy a legszebb szerintem.

  • SektorFlop
    aktív tag

    egy hülye kérdésem lenne. nagy butaságot csinálok azzal hogy így akarom hozzáfűzni a php változómat?
    submitHandler: function(form) {
    $.post('user/user.php?insert=ok&azonosito='+<?php echo $azonosito;?>, $('#azonositoForm').serialize(), function(data) {
    $('#result').html(data);
    });
    }

    ui: Közbe leesett hogy rejtett mezőt kellene használnom.

  • SektorFlop
    aktív tag

    Próbáld így:

    <input type="text" id="kijelzo"/>
    <div style="display:inline-table"><input type="button" value="1" id="egy" onClick="beutes(this)"></div>
    <div style="display:inline-table"><input type="button" value="2" id="ketto" onClick="beutes(this)"></div>
    <div style="display:inline-table"><input type="button" value="3" id="harom" onClick="beutes(this)"></div>

    function beutes(id){
    document.getElementById("kijelzo").value+=id.value;
    }

    köszi ez így jó :))

  • SektorFlop
    aktív tag

    egy nagyon egyszerű példám lenne... valaki esetleg megtudja mondani mi lehet a baj?

    function beutes(){
    var kijelzo = document.getElementById("kijelzo");
    var gomb = document.getElementById(id);
    kijelzo.value = kijelzo.value + gomb.value;
    }

    egy kis html rész hozzá:

    <input type="text" id="kijelzo"/>
    <div style="display:inline-table"><input type="button" value="1" id="egy" onClick="beutes()"></div>
    <div style="display:inline-table"><input type="button" value="2" id="ketto" onClick="beutes()"></div>
    <div style="display:inline-table"><input type="button" value="3" id="harom" onClick="beutes()"></div>

    azt szeretném, hogy a text mezőbe másolja mellé az aktuális számhoz a kívánt számot.

    hibaüzenetnek ezt írja:
    Uncaught ReferenceError: id is not defined
    beutesindex.html:31
    (anonymous function)index.html:54
    onclick

  • SektorFlop
    aktív tag

    Rövid példával élve lehet másképp is ellenőrizni:
    contacts = [{name:'Pete', asd: 'asd'}, {asd: 'asd'}];
    for(var index = 0; index<contacts.length;index++){
    alert(contacts[index]['name']);
    }

    Itt látható, hogy a második cikluslépésben "undefined"-ot dob fel.

    Szóval próbáld így, mert így nem dob exceptiont:
    var name = contacts[index]['name'];
    if(!name){
    name = 'Unknown name';
    }
    else{
    name = contacts[index]['name']['formatted'];
    }

    Remélem így jó. Lehetne ugyanilyen módon a phoneNumberre is csekkolni.

    hát úgy döntöttem hogy a displayName-t íratom ki... annak null értéke van ha nem tartalmaz semmit, és ugyan az mint a name.

    for (var index = 0; index < contacts.length; index++) {
    try {
    var name = contacts[index].name.formatted,
    li = document.createElement('li'),
    displayName = contacts[index].displayName;
    try {
    if (isset(contacts[index].phoneNumbers)) {
    var phoneNumbers = contacts[index].phoneNumbers;
    }
    if (isset(phoneNumbers[0].value)) {
    var phoneNumber_first = phoneNumbers[0].value;
    }
    } catch (e) {
    alert('problem with phoneNumber...');
    }
    if(displayName!=null){
    if (isset(phoneNumber_first)) {
    li.innerHTML = "<a href=\"tell://" + phoneNumbers + "\> displayName: " + displayName + ";</a>";
    ul.appendChild(li);
    } else {
    li.innerHTML = "displayName: " + displayName + ";";
    ul.appendChild(li);
    }
    }
    } catch (e) {
    alert(e);
    }
    }

    De most már tovább állok ezzel a témával, egyenlőre ez a megoldás megteszi nekem... még lehetne rajta mit finomítani, esetleg ha majd használom valamikor a contacts-ot.

  • SektorFlop
    aktív tag

    Igen, azért van ez, mert a jsFiddle-ről közvetlenül kimásolva a kódok elb@szódnak, egyelőre nem jöttem rá, milyen karaktert tesz a kódokba, de nálam is így van.
    A trükk pedig az, hogy a kódok legeslegvégét töröld ki (általában elég akár a legvégén lévő }); kitörlése is), és kézzel írd vissza!

    (#2496) SektorFlop : jaja, gondoltam, hogy a phoneNumberrel van baj. Akkor majd írj, mire jutottál. :K

    Nah okés! most már csak ki kell szűrni hogy csak azokat írja ki akiknek van name paramétere. Nem tudom mikor lesz rá időm... majd megírom hogy sikerült e összehozni.

  • SektorFlop
    aktív tag

    Hmm, akkor esélyes, hogy tényleg valahol dob egy el nem kapott exceptiont, ezért áll le a ciklus, és ezért nem írja ki a neveket, de nyomozzuk ki, próbáld meg a try-catch blokkal, hátha azzal előrébb jutunk.

    legalább 20 Alert ablak:

    ReferenceError:
    phoneNumbers is not defined.

    hibát kiküszöböltem, az li tagek létre jönnek, de semmi tartalom nincs utána :) lassan meg lesz

  • SektorFlop
    aktív tag

    Nincs mit!
    De azért oldjuk meg ezt a problémát, már engem is zavar. :D
    A contacts.length-re mennyit ír?

    Lehet amúgy, hogy az egész for ciklus belsejét egy try-catch blokkba kellene tenni, így legalább elkap minden esetlegesen keletkező kivételt (ilyenekre gondolok, hogy mondjuk nem létezik a contacts[index].name.formatted kulcs, csak a .name-ig, vagy ilyesmi), tehát próbáld átalakítani így a for ciklusodat (a korábbiak megmaradhatnak, még az isset() függvény felhasználása is):

    for (var index = 0; index < contacts.length; index++) {
    try {
    var name = contacts[index].name.formatted,
    li = document.createElement('li'),
    phoneNumbers, phoneNumber_first;
    try {
    if (isset(contacts[index].phoneNumbers)) {
    phoneNumbers = contacts[index].phoneNumbers;
    }
    if (isset(phoneNumbers[0].value)) {
    phoneNumber_first = phoneNumbers[0].value;
    }
    } catch (e) {
    alert('problem with phoneNumber...');
    }
    if (isset(phoneNumber_first)) {
    li.innerHTML = "<a href=\"tell://" + phoneNumber + "\>name: " + name + ", name in other form: " + contacts[index].name + " displayName: " + contacts[index].displayName + ";</a>, ";
    } else {
    li.innerHTML = "name: " + name + ", name in other form: " + contacts[index].name + " displayName: " + contacts[index].displayName + ";";
    }
    ul.appendChild(li);
    } catch (e) {
    alert(e);
    }
    }

    Most itt annyit változtattam, hogy belepakoltam egy try-catch blokkba.

    akkor oldjuk meg a problémát:D
    a contacts.length-re ha jól emlékszem 83-at írt, kicsit később lesz egy kis időm és neki állok. Már raktam egy android környezetet is a gépre, hogy több helyen is tudjam tesztelni, mivel úgy lenne igazi hogy minden eszközön ugyan úgy reagál a dolog.

  • SektorFlop
    aktív tag

    Pont kérdezni akartam, milyen készüléked van, mert [írják], hogy pl. BlackBerry-n csak részleges a támogatása. Ez más készüléken is igaz lehet.

    Ezért érdemes ellenőrizni, hogy mondjuk létezik-e egyáltalán phoneNumbers, mert ha nem, és azt próbálod felhasználni, akkor könnyen kaphatsz egy exceptiont, és onnantól nem csoda, hogy nem működik az egész.
    Próbáld meg a következőképp:
    Az onSuccess-t módosítsd az alábbi módon, és egészítsd ki az isset() függvénnyel, ahogy alább látható, a többi kód maradhat ugyanúgy:

    function isset () {
    // !No description available for isset. @php.js developers: Please update the function summary text file.
    //
    // version: 1109.2015
    // discuss at: http://phpjs.org/functions/isset
    // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // + improved by: FremyCompany
    // + improved by: Onno Marsman
    // + improved by: Rafał Kukawski
    // * example 1: isset( undefined, true);
    // * returns 1: false
    // * example 2: isset( 'Kevin van Zonneveld' );
    // * returns 2: true
    var a = arguments,
    l = a.length,
    i = 0,
    undef;

    if (l === 0) {
    throw new Error('Empty isset');
    }

    while (i !== l) {
    if (a[i] === undef || a[i] === null) {
    return false;
    }
    i++;
    }
    return true;
    }


    function onSuccess(contacts) {
    var ul = document.getElementById("list");
    alert('length of contacts: '+contacts.length);

    for (var index = 0; index < contacts.length; index++) {
    var name = contacts[index].name.formatted,
    li = document.createElement('li'),
    phoneNumbers,
    phoneNumber_first;
    try{
    if(isset(contacts[index].phoneNumbers)){
    phoneNumbers = contacts[index].phoneNumbers;
    }
    if(isset(phoneNumbers[0].value)){
    phoneNumber_first = phoneNumbers[0].value;
    }
    } catch(e){
    alert('problem with phoneNumber...');
    }
    if(isset(phoneNumber_first)){
    li.innerHTML = "<a href=\"tell://" + phoneNumber + "\>name: " + name + ", name in other form: " + contacts[index].name + " displayName: " + contacts[index].displayName + ";</a>, ";
    }
    else{
    li.innerHTML = "name: " + name + ", name in other form: " + contacts[index].name + " displayName: " + contacts[index].displayName + ";";
    }
    ul.appendChild(li);
    }
    }

    Nem jött össze :( Odáig fut le a dolog, hogy kiírja mennyi elem van a tömbben.... De egyenlőre hanyagolom a Concats dolgokat... még később azért próbálkozom vele, nem hagyom ennyibe. Minden esetre köszönöm a segítségedet.

  • SektorFlop
    aktív tag

    Pont kérdezni akartam, milyen készüléked van, mert [írják], hogy pl. BlackBerry-n csak részleges a támogatása. Ez más készüléken is igaz lehet.

    Ezért érdemes ellenőrizni, hogy mondjuk létezik-e egyáltalán phoneNumbers, mert ha nem, és azt próbálod felhasználni, akkor könnyen kaphatsz egy exceptiont, és onnantól nem csoda, hogy nem működik az egész.
    Próbáld meg a következőképp:
    Az onSuccess-t módosítsd az alábbi módon, és egészítsd ki az isset() függvénnyel, ahogy alább látható, a többi kód maradhat ugyanúgy:

    function isset () {
    // !No description available for isset. @php.js developers: Please update the function summary text file.
    //
    // version: 1109.2015
    // discuss at: http://phpjs.org/functions/isset
    // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // + improved by: FremyCompany
    // + improved by: Onno Marsman
    // + improved by: Rafał Kukawski
    // * example 1: isset( undefined, true);
    // * returns 1: false
    // * example 2: isset( 'Kevin van Zonneveld' );
    // * returns 2: true
    var a = arguments,
    l = a.length,
    i = 0,
    undef;

    if (l === 0) {
    throw new Error('Empty isset');
    }

    while (i !== l) {
    if (a[i] === undef || a[i] === null) {
    return false;
    }
    i++;
    }
    return true;
    }


    function onSuccess(contacts) {
    var ul = document.getElementById("list");
    alert('length of contacts: '+contacts.length);

    for (var index = 0; index < contacts.length; index++) {
    var name = contacts[index].name.formatted,
    li = document.createElement('li'),
    phoneNumbers,
    phoneNumber_first;
    try{
    if(isset(contacts[index].phoneNumbers)){
    phoneNumbers = contacts[index].phoneNumbers;
    }
    if(isset(phoneNumbers[0].value)){
    phoneNumber_first = phoneNumbers[0].value;
    }
    } catch(e){
    alert('problem with phoneNumber...');
    }
    if(isset(phoneNumber_first)){
    li.innerHTML = "<a href=\"tell://" + phoneNumber + "\>name: " + name + ", name in other form: " + contacts[index].name + " displayName: " + contacts[index].displayName + ";</a>, ";
    }
    else{
    li.innerHTML = "name: " + name + ", name in other form: " + contacts[index].name + " displayName: " + contacts[index].displayName + ";";
    }
    ul.appendChild(li);
    }
    }

    Még ezt megpróbálom aztán azt hiszem túllépem ezt a fejezettet, szeretek így leragadni részeknél mert ha elakadok rengeteget tanul vele az ember.

  • SektorFlop
    aktív tag

    Rájöttem, hogy a kettő között mi a különbség.
    A kódban, amit Te mutattál, ez van:

    options.filter="";
    var fields = ["phoneNumbers", "name"];

    a példakódban ez:

    filter = ["displayName"]; // return contact.displayName field
    Itt mondjuk elcseszték, filter helyett itt fields akart szerintem lenni az elnevezés, de mindegy, nem is ez a lényeg.
    Tehát ott displayName-et használnak, nálad a sima name van. Lehet, hogy a name valamiért üres (ezért nem jelenik meg nálad), a displayName viszont nem.

    Ezért az itt lévő kódodat közelítsük meg másképpen, próbáld átírni így a JavaScript-kódot:

    function onDeviceReady() {
    var options = new ContactFindOptions();
    options.filter = "";
    var fields = ["displayName", "phoneNumbers", "name"];
    navigator.contacts.find(fields, onSuccess, onError, options);
    }

    function onSuccess(contacts) {
    var ul = document.getElementById("list");
    for (var index = 0; index < contacts.length; index++) {
    var name = contacts[index].name.formatted;
    var phoneNumber = contacts[index].phoneNumbers[0].value;
    var li = document.createElement('li');
    li.innerHTML = "<a href=\"tell://" + phoneNumber + "\>name: " + name + ", name in other form: " + contacts[index].name + " displayName: " + contacts[index].displayName + ";</a>, ";
    ul.appendChild(li);
    }
    }

    function onError(error) {
    alert('hiba!');
    }

    function init() {
    document.addEventListener("deviceready", onDeviceReady, false);
    }

    ===

    (#2466) SektorFlop : az entries tömb hosszát adja meg.

    vicc az egész másik készüléken működik :W

  • SektorFlop
    aktív tag

    Közbe próbáltam keresni a hibát alert ablakokkal, hogy nem-e áll meg a ciklus valahol.
    Szóval a ciklus elejére elhelyeztem ezt: alert("belépet");
    A végére pedig ezt: alert(i);

    Elsőre sikeresen belép a ciklusba, le létrehozza az li tag-et elhelyezi benne a nevet, aztán belép másodszorra is a cikluba kiírja ismét alertbe hogy belépet, de onnantól nem történik semmi. Nem lehet hogy nem az li létrehozásával van valami gubanc?

    soronként beraktam egy alert-et

    itt áll le a ciklus második körbe:

    var phoneNumber = contacts.phoneNumbers[0].value;

  • SektorFlop
    aktív tag

    Rájöttem, hogy a kettő között mi a különbség.
    A kódban, amit Te mutattál, ez van:

    options.filter="";
    var fields = ["phoneNumbers", "name"];

    a példakódban ez:

    filter = ["displayName"]; // return contact.displayName field
    Itt mondjuk elcseszték, filter helyett itt fields akart szerintem lenni az elnevezés, de mindegy, nem is ez a lényeg.
    Tehát ott displayName-et használnak, nálad a sima name van. Lehet, hogy a name valamiért üres (ezért nem jelenik meg nálad), a displayName viszont nem.

    Ezért az itt lévő kódodat közelítsük meg másképpen, próbáld átírni így a JavaScript-kódot:

    function onDeviceReady() {
    var options = new ContactFindOptions();
    options.filter = "";
    var fields = ["displayName", "phoneNumbers", "name"];
    navigator.contacts.find(fields, onSuccess, onError, options);
    }

    function onSuccess(contacts) {
    var ul = document.getElementById("list");
    for (var index = 0; index < contacts.length; index++) {
    var name = contacts[index].name.formatted;
    var phoneNumber = contacts[index].phoneNumbers[0].value;
    var li = document.createElement('li');
    li.innerHTML = "<a href=\"tell://" + phoneNumber + "\>name: " + name + ", name in other form: " + contacts[index].name + " displayName: " + contacts[index].displayName + ";</a>, ";
    ul.appendChild(li);
    }
    }

    function onError(error) {
    alert('hiba!');
    }

    function init() {
    document.addEventListener("deviceready", onDeviceReady, false);
    }

    ===

    (#2466) SektorFlop : az entries tömb hosszát adja meg.

    Közbe próbáltam keresni a hibát alert ablakokkal, hogy nem-e áll meg a ciklus valahol.
    Szóval a ciklus elejére elhelyeztem ezt: alert("belépet");
    A végére pedig ezt: alert(i);

    Elsőre sikeresen belép a ciklusba, le létrehozza az li tag-et elhelyezi benne a nevet, aztán belép másodszorra is a cikluba kiírja ismét alertbe hogy belépet, de onnantól nem történik semmi. Nem lehet hogy nem az li létrehozásával van valami gubanc?

  • SektorFlop
    aktív tag

    valaki megtudná mondani hogy mi a szerepe ennek: entries.length

    hosszabb keresgélés után se találtam semmit róla.

  • SektorFlop
    aktív tag

    Hát most így nem látok bele, alapból úgy gondolnám, ha beállítod, hogy ne csak egyet adjon vissza, akkor nem is csak egy lesz benne, és tömbként működik, különben stringként... ezt viszont cáfolja az utána lévő példa, ha tudnám próbálgatni, könnyebben meg tudnám mondani, de nálad van az eszköz. :D

    És ha pontosan úgy csinálod, ahogy ebben a példában van, tehát alerttel megpróbálod mindegyiket kiíratni?

    Ahha az alert ablak többször is felvillant nevekkel, bár egy-kettő üres volt, de ott már biztos a telefon oldalán van a hiba.

    Nem tudod esetleg listázással mi lehet a baj?

  • SektorFlop
    aktív tag

    Gyors keresgélés után megtaláltam a ContactFindOptions-t: [link].
    Ez alapján pedig ez a baj:
    Properties

    filter: The search string used to find contacts. (DOMString) (Default: "")
    multiple: Determines if the find operation should return multiple contacts. (Boolean) (Default: false)

    A félkövérített rész azt mondja meg, hogy alapértelmezettként nem sok emberkét ad vissza, hanem egyet a felvett kapcsolatok közül.
    Ezért a megoldás az, hogy egészítsd ki a kódodat, az
    options.filter="";
    sor ALÁ rakd még be ezt is:
    options.multiple=true; // return multiple results

    Remélem így már sikerül, majd írd meg, mi a helyzet.

    Szintén csak a legelső nevet listázza ki, bár nem értem hogy mi szükség a for ciklusra ha alapértelmezett ként csak egy nevet add vissza?

  • SektorFlop
    aktív tag

    És szerinted honnan találjuk ki, hogy mi van a contacts tömbödben? :U
    Az sem igazán világos, a nevek kilistázására szolgáló függvénynek hogyan adhattál ennyire nem találó nevet, mint az onSuccess. :) Minden függvény lehetőleg kapjon olyan nevet, amire való.
    Szóval ha szeretnél segítséget, teljes kódra lenne szükség, vagy legalább olyanra, amiből kiderül, egyáltalán mit csinálsz korábban.
    Példakódot is felrakhatnál jsbin-re: [link].

    Most tanulom a dolgot példa programok alapján próbálom összedobni. Angol könyvből tanulom sajnos így nehézkesen megy.

    Egy android alkalmazásról lenne szó ami csak kilistáza a neveket és ha valamelyikre rábökünk a tárcsázóba bemásolja a számát, igazából az onSuccess függvény első fele nem világos nekem. Ha jól értettem a könyv szerint a contacts tömb tartalma a telefonon lévő névjegyzékek. Remélem nem írok nagy hülyeségeket.

    Ugyan ezzel a módszerrel sikerült kilistáznom az sd kártya tartalmát, de névjegyzékek esetén csak az első nevet írja ki. Gondolkoztam azon hogy esetleg a telefon oldalán lehet a probléma.

    A témával kapcsolatban nem találtam topicit, ezért merészkedtem ide írni, mivel az egész js ugyan úgy.

    teljes dokumentum:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Kapcsolatok</title>

    <script type="text/javascript" src="phonegap-1.1.0.js"></script>
    <script type="text/javascript">

    function onDeviceReady(){
    var options = new ContactFindOptions();
    options.filter="";
    var fields = ["phoneNumbers", "name"];
    navigator.contacts.find(fields, onSuccess, onError, options);
    }

    function onSuccess(contacts) {
    var ul = document.getElementById("list");
    for(var index=0;index<contacts.length;index++){
    var name = contacts[index].name.formatted;
    var phoneNumber = contacts[index].phoneNumbers[0].value;
    var li = document.createElement('li');
    li.innerHTML = "<a href=\"tell://"+phoneNumber+"\>"+name+";</a>";
    ul.appendChild(li);
    }
    }

    function onError(error) {
    alert('hiba!');
    }
    function init(){
    document.addEventListener("deviceready", onDeviceReady, false);
    }

    </script>
    </head>
    <body onLoad="init()">

    <h1 align="center">Névjegyek</h1>

    <ul id="list"></ul>

    </body>
    </html>

  • SektorFlop
    aktív tag

    Valaki ha esetleg tud segítsen!

    Névjegyzéket szeretnék kilistázni, de csak az első nevet írja ki.

    function onDeviceReady(){
    var options = new ContactFindOptions();
    options.filter="";
    var fields = ["phoneNumbers", "name"];
    navigator.contacts.find(fields, onSuccess, onError, options);
    }
    function onSuccess(contacts) {
    var ul = document.getElementById("list");
    for(var index=0;index<contacts.length;index++){
    var name = contacts[index].name.formatted;
    var phoneNumber = contacts[index].phoneNumbers[0].value;
    var li = document.createElement('li');
    li.innerHTML = ""+name+", "+phoneNumber+"";
    ul.appendChild(li);
    }
    }
    function init(){
    document.addEventListener("deviceready", onDeviceReady, false);
    }

  • SektorFlop
    aktív tag

    Ne add fel, hidd el, az elején én is csak kapkodtam a fejem, hogy "most mi va'? Semmit nem értek." :D
    Aztán szép lassan összeáll a kép, de azt az ember nem ússza meg, hogy sokat olvasgasson utána.
    A header() akkor szokott hibát okozni, ha van bármiféle kiírás még a fejlécek kiküldése előtt. Elég akár egyetlen szóköz is ahhoz, hogy probléma legyen. Vagy pl. a karakterkódolási probléma: UTF-8 BOM-mal - na az nem jó, mert kiokád a doksi elejére egy felesleges karaktersorozatot, mindig BOM nélküli UTF-8-kódolást használj (ezt Notepad++-ban nagyon jól lehet csekkolni).
    Azért majd még egyszer olvasd át, amiket írtam, remélem abból nagyjából vágni fogod, mihez is kéne nyúlni. De kérdezz vissza, ha valami nem egyértelmű.

    Kicsit utána olvastam és nehezen sikerült összehozni. Köszönöm a segítséget! :R Van még mit tanulnom :)

  • SektorFlop
    aktív tag

    Ez a kód már csak azért is fájó, mert olyan könnyen támadható az oldalad SQL Injectionnel, mint az állat. Nem ártana escape-elni a felhasználótól érkező tartalmat - soha ne bízz meg abban az adatban, ami a felhasználótól közvetlenül érkezik...

    Másrészt ha kódot illesztesz be, akkor jelöld ki a kódodat itt a szövegmezőben, majd kattints a "Programkód" gombra, pont arra való, hogy valami normálisan átlátható formában legyenek a kódok.

    Harmadrészt: a mailcsere.php fájlban abszolúte semmi értelme JavaScripttel átirányítani a felhasználót, arra ott a PHP header() függvénye is - felesleges tehát kiíratni bármit is.
    Ahogy a példában van:
    header('Location: http://www.example.com/');
    de ezelőtt ne legyen SEMMILYEN kiíratás.
    DE (!!!) ezt NE TEDD BELE!! Egyáltalán ne rakj bele semmilyen átirányítást, mert most AJAX-os kommunikáció zajlik, lásd később a magyarázatot.

    Aztán menjünk tovább.
    Ez van most a kódodban:
    /* Send the data using post and put the results in a div */
    $.post( 'login/mailcsere.php', { email: term },
    function( data ) {
    var content = $( data ).find( '#content' );
    $( "#result" ).empty().append( content );
    }
    );

    Ez most azt csinálja, hogy a login/mailcsere.php fájlnak elküldi a term-ben található adatot, az emailbe objektumba begyűjtve, ez majd PHP-oldalon is megjelenik.
    A sikeres (!) adatküldés esetén (pl. létezik a fájl, elérhető, nem dobott vissza hibát, stb.) a content változóba úgy pakolja be az adatot, hogy a visszakapott adatokból kikeresi a "content" id-val rendelkező DOM-elemet (!), aztán a content változó tartalmát bepakolja a "result" id-val rendelkező HTML-elembe.

    Egyrészt: amit Te visszaadsz a PHP-fájllal, abba nem raksz bele semmi olyat, amiben "content" id-val rendelkező elem van, másrészt egyáltalán nincs "result" id-vel rendelkező elemed az oldalon.
    Sőt, a PHP-fájlban csak azt a JavaScriptes visszairányítós részt íratod ki, ami AJAX-os kommunikáció esetén eleve felesleges.

    Először próbáld csak úgy, hogy kiíratod echo-val, hogy "siker" vagy "hiba", aztán a $.post részt egyelőre (!) így módosítod:
    var content = $( data ).find( '#content' );
    $( "#result" ).empty().append( content );

    HELYETT
    var content = $( data );
    $( "#result" ).empty().append( content );

    Ezenkívül még tegyél be a mobil.php fájlba egy ilyet valahova a végére mondjuk:
    <div id="result"></div>

    Ide fogja pakolni az AJAX-kommunikáció eredményét.

    éreztem hogy az egész rossz... nem értek se az ajaxhoz és a javascripthez is csak kicsit :( a header helyet azért használtam scriptet mert atw-vén futna a dolog és ott mindig hibát írt a header-re. próbáltam más irányba menni ezzel a dologgal, ahogy írtam nem értek hozzá, így erőltetem inkább ezeket a scripteket, de sajnos nem járok sehogy se sikerrel :( mindenesetre köszönöm a segítséget.

  • SektorFlop
    aktív tag

    Igen, jól láttad, jQuery-vel nagyon egyszerű az AJAX-os kommunikáció.
    Itt konkrét példát is mutatnak rá: jQuery.post().
    Nézd meg alul azt a keresőt, ami bemutatja ennek a működését.

    A lényeg kiszedve az oldalról, van egy ilyen form:

    <form action="/" id="searchForm">
    <input type="text" name="s" placeholder="Search..." />
    <input type="submit" value="Search" />
    </form>
    <!-- the result of the search will be rendered inside this div -->
    <div id="result"></div>

    Tehát az "s" name-mel rendelkező input-elem tartalmát szeretnénk elküldeni POST-metódussal. Itt a jQuery-kód:

    /* attach a submit handler to the form */
    $("#searchForm").submit(function(event) {

    /* stop form from submitting normally */
    event.preventDefault();

    /* get some values from elements on the page: */
    var $form = $( this ),
    term = $form.find( 'input[name="s"]' ).val(),
    url = $form.attr( 'action' );

    /* Send the data using post and put the results in a div */
    $.post( url, { s: term },
    function( data ) {
    var content = $( data ).find( '#content' );
    $( "#result" ).empty().append( content );
    }
    );
    });

    A lényeg ez, ami az elején lévő példakódban van, ez elég jól érthető:

    $.post('ajax/test.html', function(data) {
    $('.result').html(data);
    });

    nem sikerül összehoznom...
    mobil.php fájlom ahol a form található...

    <div data-role="page" id="mailcsere">
    <div data-role="header">
    <h1>E-mail módosítás</h1>
    </div>
    <div data-role="content">
    <form action='/' method='post' id="mailcsere">
    <input type='text' name='email' />
    <input type='submit' value='Módosítás' />
    </form>
    <script>
    /* attach a submit handler to the form */
    $("#mailcsere").submit(function(event) {

    /* stop form from submitting normally */
    event.preventDefault();

    /* get some values from elements on the page: */
    var $form = $( this ),
    term = $form.find( 'input[name="email"]' ).val(),
    url = $form.attr( 'action' );

    /* Send the data using post and put the results in a div */
    $.post( 'login/mailcsere.php', { email: term },
    function( data ) {
    var content = $( data ).find( '#content' );
    $( "#result" ).empty().append( content );
    }
    );
    });
    </script>
    </div>
    <div data-role="footer">
    <h4>Page Footer</h4>
    </div>
    </div>

    mailcsere.php

    <?
    session_start();
    $felhasznalo=$_SESSION['felhasznalo'];
    require_once ('connect.php');
    $email=$_POST['email'];
    $sql = "UPDATE `felhasznalok` SET email='$email' WHERE user='$felhasznalo';";
    if (mysql_query($sql)) {
    echo "<script type='text/javascript'>window.location='mobil.php?szerkezt=sikeres'</script>";
    exit;
    }
    else {
    echo "<script type='text/javascript'>window.location='mobil.php?szerkezt=sikertelen'</script>";
    }
    ?>

    a mobil.php fájlom azért néz ki így mert phonegap-el dolgozom, ezért is bajlódom a formokkal :W

  • SektorFlop
    aktív tag

    jQuery segítségével a legegyszerűbb: jQuery.get(), itt is van példa, itt bővebb magyarázat is (ld. 4. pont).

    Kérdezz, ha elakadtál.

    úgy látom ezzel a módszerrel áttudom adni post-al is ami még jobb lenne... egy kis segítséget kérnék, 2 mezőt szeretnék átadni, és hol kell megadni hogy melyik oldalnak küldené az űrlap? tapasztalatom szerint nem elég action-ba beírni.

  • SektorFlop
    aktív tag

    sziasztok!

    text mező value értékét szeretném átadni egy PHP fájlnak GET metódussal, tudomásom szerint ehhez script szükséges. valaki tudna ebbe segíteni? akár egy egyszerű példa bemutatásával?

Új hozzászólás Aktív témák

Hirdetés