Jquery a pole – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jquery  a pole – JavaScript, AJAX, jQuery – Fórum – Programujte.comJquery a pole – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

vagus0
Newbie
25. 6. 2015   #1
-
0
-

Dobrý den,
mám dva selecty a potřebuji naplnit druhý - to se daří, ale současně potřebuji plnit pole to mně nejde viz příklad.
Jsem v Jquery absolutní začátečník. POtřebuji položky z pole i odstraňovat :-).
Díky za radu
<h1>Pokyny</h1>
<select multiple="multiple" class="options" id="textarea">
<option value="item1">Item 1</option>
<option value="item2">Item 2</option>
<option value="item3">Item 3</option>
<option value="item4">Item 4</option>
<option value="item5">Item 5</option>
</select>


<button id="copy">Copy</button>
<button id="remove">Remove</button>

<select id="textarea2" name="cil" multiple class="remove">

</select>
<script>
var list = [];
$(function(){
$("#copy").on("click", function(){
$(".options option:selected").each(function(){
$("#textarea2").append('<option>'+$(this).text()+'</option>');
$(list.push($(this).text()));
$('option:selected', "#textarea").remove();
});
});
$("#remove").on("click", function(){
$(".remove option:selected").each(function(){
$("#textarea").append('<option>'+$(this).text()+'</option>');
$('option:selected', "#textarea2").remove();
});
});
});
document.write($list);
</script>

Nahlásit jako SPAM
IP: 93.99.228.–
peter
~ Anonymní uživatel
4014 příspěvků
26. 6. 2015   #2
-
0
-

$(list.push($(this).text()));

Nevim, jestli uplne chapu tvuj problem. Mozna hledas splice. Cyklem najdes, kde ten prvek v poli je a pak vsechny nalezene pozice odstranis smerem ze zadu
http://www.tvorba-webu.cz/…ipt/pole.php
pole.splice(0,1);

Nebo proste u odstranene muzes vyplnit hodnotu na null nebo false a pak v cyklu pro vypsani ignorovat vse, kde je hodnota null

x = [1,2,3,4,5,'A','B','C']; //x[0]=1; x[1]=2; x[2]=3; x[3]=4; x[4]=5; x[5]='A'; x[6]='C'; x[7]='D';
x[3] = null; //x = [1,2,3,null,5,'A','B','C'];
str = '';
for (i=0;i<x.length;++i) {if (x[i]!=null) {str+=x[i]+', ';} // 1,2,3,5,'A','B','C'
alert(str);

jinak bys musel cele pole zkratka ulozit do nove promenne.

Nebo, mozna v pripade selectu se spis vyplati asociativni pole (objekt), pole typu index=>hodnota. (ted ale nevim, zda bude brat jako klic i nulu a jednicku; jako srting by to mel vzit, ale jako cisla nevim)

x = {'0':1, '1':2, 'a':3, 'b':4, ...}; //x['0']=1; x['1']=2; x['a']=3; x['b']=4; nebo x['0']=1; x['1']=2; x.a=3; x.b=4;

Select by jsi potom mel treba

<otion value=0>1</option>
<otion value=1>2</option>
<otion value=a>3</option>
<otion value=b>4</option>

document.write($list);
Tohle ti funguje? Nebo, co je to za pokus. V JS jsou promenne treba a,b,c,list a pod. Ale muzes tak nazvat i funkce. $, to si vymyslelo jquery pro funkci jquery. Shodou okolnosti je $ dalsi mozny znak, ktery lze pro jmeno promenne ci funkce pouzit. Jine jazyky jsou v tohle prisnejsi a maji pro $ jine vyuziti.
document.write($list);  - vypise undefined, protoze promenna $ neexistuje
document.write(list);  - vypise array, protoze nahore mas: var list = [];
document.write(list.toSource());  - firefox vypise prvky pole;
alert(list); - zobrazi alert s hlaskou a dokaze ne-asociativni pole zobrazit jako prvky s carkami; je to spis vychytavka pro ladeni
Nicmene, bezny uzivatel vypisuje pole pres cyklus. Viz ten muj priklad se str+=
Document.write je funkce, kterou zapisujes do stranky pri jejim vytvareni. Nelze ji pouzit uz na onclick. Muzes misto toho pouzit element.innerHTML='text', pripadne alternativu pres jquery, tusim $('#elementid').html('text')
Mozna, ze v jquery existuje i neco, co to pole umi vypsat. Nebo aspon spojit do stringu. Ja moc jquery nepouzivam.

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:c93f:88...–
vagus0
Newbie
26. 6. 2015   #3
-
0
-

#1 vagus

Díky za rady,

je tady ale zásadní problém nefunguje naplnění pole t.j

$(list.push($(this).text()));

zkoušel sem vypsat první prvek

Document.write(list[0])

a též

for(i=0;i<list.length;++i)
{
    alert(list[i]);
    }
Díky za radu

Nahlásit jako SPAM
IP: 93.99.228.–
Naemos0
Newbie
26. 6. 2015   #4
-
0
-

Ahoj, problém je, kdy voláš to vypsání pole. Ty ho vypíše jen na konci načtení scriptu, kdy je samozřejmě prázdné. Přemísti vypsání třeba na konec event handleru pro element #copy a nebo #remove, kde se už něco s tím polem provede (naplní nebo vymaže):

$("#copy").on("click", function() {
  $(".options option:selected").each(function() {
    $("#textarea2").append('<option>' + $(this).text() + '</option>');
    $(list.push($(this).text()));
    $('option:selected', "#textarea").remove();
  });
  document.write(list);

});
Nahlásit jako SPAM
IP: 46.183.64.–
vagus0
Newbie
27. 6. 2015   #5
-
0
-

#4 Naemos
TAk sem ten výpis přemístil , ale nic to nepomohlo.

Omlouvám se za natvrdlost, ovládám jen trochu PHP. Na Jquery koukám jako zjara.

$(function(){
    $("#copy").on("click", function(){
        $(".options option:selected").each(function(){
           $("#textarea2").append('<option>'+$(this).text()+'</option>');
           $(list.push($(this).text()));
           $('option:selected', "#textarea").remove();
        
        });
        document.write(list[0]);
         });  
    $("#remove").on("click", function(){
        $(".remove option:selected").each(function(){
           $("#textarea").append('<option>'+$(this).text()+'</option>');
            $('option:selected', "#textarea2").remove();
        });  
             document.write(list[0]);
    });  
});

Nahlásit jako SPAM
IP: 93.99.228.–
Naemos0
Newbie
27. 6. 2015   #6
-
0
-

Používáš stejný kód jako v úvodním postu? Mohl by jsi sem prosím kdyžtak napsat tvůj aktuální? Jinak funkční příklad http://jsfiddle.net/ko053thk/

Pro odstranění prvku z pole používám $.grep. Přidal jsem ti tam ještě div #pole do kterého vypisuji obsah proměnný list.

var list = [];
$(function () {
    $("#copy").on("click", function () {
        $(".options option:selected").each(function () {
            $("#textarea2").append('<option>' + $(this).text() + '</option>');
            list.push($(this).text());
            $('option:selected', "#textarea").remove();

        });
        $("#pole").html(list);
    });
    $("#remove").on("click", function () {
        $(".remove option:selected").each(function () {
            var optionValue = $(this).text();
            $("#textarea").append('<option>' + optionValue + '</option>');
            $('option:selected', "#textarea2").remove();
            list = $.grep(list, function(list_item){
                return list_item != optionValue;
            });
        });
        $("#pole").html(list);
    });
});
Nahlásit jako SPAM
IP: 46.183.64.–
vagus0
Newbie
27. 6. 2015   #7
-
0
-

#6 Naemos
Díky za kod , který funguje,

Jen nevím, jak vložit obsah do proměné:

var list = [];
$(function () {
    $("#copy").on("click", function () {
        $(".options option:selected").each(function () {
            $("#textarea2").append('<option>' + $(this).text() + '</option>');
            list.push($(this).text());
            $('option:selected', "#textarea").remove();

        });
        $("#pole").text(list);
    });
    $("#remove").on("click", function () {
        $(".remove option:selected").each(function () {
            var optionValue = $(this).text();
            $("#textarea").append('<option>' + optionValue + '</option>');
            $('option:selected', "#textarea2").remove();
            list = $.grep(list, function(list_item){
                return list_item != optionValue;
            });
        });
        var textik="";
        textik=$("#pole").text(list);
        document.write(textik);
         });
});

háže to chybu, tedy ten write.

Je to pro mě Španělská vesnice.Omlouvám se , že otravuji.

Pavel Říha

Nahlásit jako SPAM
IP: 93.99.228.–
vagus0
Newbie
27. 6. 2015   #8
-
0
-

#7 vagus
možná že takhle:

textik=$(("#pole").text(list)).text();
        document.write(textik);

Nahlásit jako SPAM
IP: 93.99.228.–
Naemos0
Newbie
27. 6. 2015   #9
-
0
-

Asi teď nějak nechápu co myslíš s tou proměnnou.

To pole je přístupné v kódu v proměnné "list". Pokud chceš vybrat jen konkrétní prvek z toho pole, můžeš třeba pomocí indexu (list[0], list[1], atd.) jak jsi psal dříve.

Jestli to pole chceš převést čístě na text, můžeš použít cyklus jak psal peter nebo použít metodu .join(oddělovač)

document.write(list.join(","));
Nahlásit jako SPAM
IP: 46.183.64.–
vagus0
Newbie
28. 6. 2015   #10
-
0
-

#9 Naemos
Díky za pomoc  ale mám ještě problém s uložením proměné do cookies(ta potom půjde pomocí PHP do Mysql)

napsal sem zatím:

var list = [];
$(function () {
    $("#copy").on("click", function () {
        $(".options option:selected").each(function () {
            $("#textarea2").append('<option>' + $(this).text() + '</option>');
            list.push($(this).text());
            $('option:selected', "#textarea").remove();

        });
        $("#pole").text(list);
    });
    $("#remove").on("click", function () {
        $(".remove option:selected").each(function () {
            var optionValue = $(this).text();
            $("#textarea").append('<option>' + optionValue + '</option>');
            $('option:selected', "#textarea2").remove();
            list = $.grep(list, function(list_item){
                return list_item != optionValue;
            });
        });
        
        $("#pole").text(list);
        document.cookie="polozka="+(list.join(","));
        
         });
        
        
});

</script>
<?PHP
echo($_COOKIE['polozka']);
?>

zatím to nefunguje.

Nahlásit jako SPAM
IP: 93.99.228.–
peter
~ Anonymní uživatel
4014 příspěvků
29. 6. 2015   #11
-
0
-

http://peter-mlich.wz.cz/web/js/prjpw/cookies.html

Ja bych si pred tim udelal alert. Taky bacha na stredniky a jine znaky, ktere v cookies byt nesmi nebo slouzi k necemu jinemu.

str = list.join(",");
alert(str);
document.cookie="polozka="+str;

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:5da2:44...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý